@agent-native/core 0.2.7 → 0.3.1
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 +59 -26
- package/dist/a2a/agent-card.d.ts +3 -0
- package/dist/a2a/agent-card.d.ts.map +1 -0
- package/dist/a2a/agent-card.js +26 -0
- package/dist/a2a/agent-card.js.map +1 -0
- package/dist/a2a/client.d.ts +25 -0
- package/dist/a2a/client.d.ts.map +1 -0
- package/dist/a2a/client.js +119 -0
- package/dist/a2a/client.js.map +1 -0
- package/dist/a2a/handlers.d.ts +4 -0
- package/dist/a2a/handlers.d.ts.map +1 -0
- package/dist/a2a/handlers.js +252 -0
- package/dist/a2a/handlers.js.map +1 -0
- package/dist/a2a/index.d.ts +4 -0
- package/dist/a2a/index.d.ts.map +1 -0
- package/dist/a2a/index.js +5 -0
- package/dist/a2a/index.js.map +1 -0
- package/dist/a2a/middleware.d.ts +3 -0
- package/dist/a2a/middleware.d.ts.map +1 -0
- package/dist/a2a/middleware.js +36 -0
- package/dist/a2a/middleware.js.map +1 -0
- package/dist/a2a/server.d.ts +4 -0
- package/dist/a2a/server.d.ts.map +1 -0
- package/dist/a2a/server.js +18 -0
- package/dist/a2a/server.js.map +1 -0
- package/dist/a2a/task-store.d.ts +10 -0
- package/dist/a2a/task-store.d.ts.map +1 -0
- package/dist/a2a/task-store.js +73 -0
- package/dist/a2a/task-store.js.map +1 -0
- package/dist/a2a/types.d.ts +109 -0
- package/dist/a2a/types.d.ts.map +1 -0
- package/dist/a2a/types.js +3 -0
- package/dist/a2a/types.js.map +1 -0
- package/dist/adapters/cli/index.d.ts +4 -0
- package/dist/adapters/cli/index.d.ts.map +1 -0
- package/dist/adapters/cli/index.js +3 -0
- package/dist/adapters/cli/index.js.map +1 -0
- package/dist/adapters/cli/registry.d.ts +33 -0
- package/dist/adapters/cli/registry.d.ts.map +1 -0
- package/dist/adapters/cli/registry.js +62 -0
- package/dist/adapters/cli/registry.js.map +1 -0
- package/dist/adapters/cli/shell-adapter.d.ts +42 -0
- package/dist/adapters/cli/shell-adapter.d.ts.map +1 -0
- package/dist/adapters/cli/shell-adapter.js +57 -0
- package/dist/adapters/cli/shell-adapter.js.map +1 -0
- package/dist/adapters/cli/types.d.ts +24 -0
- package/dist/adapters/cli/types.d.ts.map +1 -0
- package/dist/adapters/cli/types.js +2 -0
- package/dist/adapters/cli/types.js.map +1 -0
- package/dist/adapters/firestore/adapter.d.ts.map +1 -1
- package/dist/adapters/firestore/adapter.js.map +1 -1
- package/dist/adapters/neon/adapter.d.ts.map +1 -1
- package/dist/adapters/neon/adapter.js +37 -21
- package/dist/adapters/neon/adapter.js.map +1 -1
- package/dist/adapters/supabase/adapter.d.ts.map +1 -1
- package/dist/adapters/supabase/adapter.js +10 -2
- package/dist/adapters/supabase/adapter.js.map +1 -1
- package/dist/adapters/sync/file-sync.d.ts.map +1 -1
- package/dist/adapters/sync/file-sync.js.map +1 -1
- package/dist/adapters/sync/index.d.ts +2 -2
- package/dist/adapters/sync/index.d.ts.map +1 -1
- package/dist/adapters/sync/index.js +1 -1
- package/dist/adapters/sync/index.js.map +1 -1
- package/dist/adapters/sync/merge.js +1 -2
- package/dist/adapters/sync/merge.js.map +1 -1
- package/dist/adapters/sync/types.d.ts.map +1 -1
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/index.js +15 -13
- package/dist/cli/index.js.map +1 -1
- package/dist/client/components/ApiKeySettings.d.ts +1 -1
- package/dist/client/components/ApiKeySettings.d.ts.map +1 -1
- package/dist/client/components/ApiKeySettings.js +9 -4
- package/dist/client/components/ApiKeySettings.js.map +1 -1
- package/dist/client/components/MissingKeyCard.d.ts +1 -1
- package/dist/client/components/MissingKeyCard.d.ts.map +1 -1
- package/dist/client/components/MissingKeyCard.js +1 -1
- package/dist/client/components/MissingKeyCard.js.map +1 -1
- package/dist/client/harness.d.ts +10 -0
- package/dist/client/harness.d.ts.map +1 -1
- package/dist/client/harness.js +27 -0
- package/dist/client/harness.js.map +1 -1
- package/dist/client/index.d.ts +1 -1
- package/dist/client/index.d.ts.map +1 -1
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/use-file-watcher.d.ts.map +1 -1
- package/dist/client/use-file-watcher.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/scripts/utils.d.ts.map +1 -1
- package/dist/scripts/utils.js +3 -1
- package/dist/scripts/utils.js.map +1 -1
- package/dist/server/create-server.d.ts.map +1 -1
- package/dist/server/create-server.js +2 -1
- package/dist/server/create-server.js.map +1 -1
- package/dist/server/index.d.ts +1 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +1 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/missing-key.d.ts.map +1 -1
- package/dist/server/missing-key.js.map +1 -1
- package/dist/server/production.d.ts.map +1 -1
- package/dist/server/production.js.map +1 -1
- package/dist/server/sse.d.ts +1 -1
- package/dist/server/sse.d.ts.map +1 -1
- package/dist/server/sse.js.map +1 -1
- package/dist/shared/agent-chat.d.ts +18 -0
- package/dist/shared/agent-chat.d.ts.map +1 -1
- package/dist/shared/agent-chat.js +35 -0
- package/dist/shared/agent-chat.js.map +1 -1
- package/dist/shared/index.d.ts +1 -1
- package/dist/shared/index.d.ts.map +1 -1
- package/dist/shared/index.js +1 -1
- package/dist/shared/index.js.map +1 -1
- package/package.json +127 -125
- package/src/templates/default/.agents/skills/capture-learnings/SKILL.md +50 -0
- package/src/templates/default/.agents/skills/create-skill/SKILL.md +167 -0
- package/src/templates/default/.agents/skills/delegate-to-agent/SKILL.md +90 -0
- package/src/templates/default/.agents/skills/files-as-database/SKILL.md +91 -0
- package/src/templates/default/.agents/skills/frontend-design/SKILL.md +69 -0
- package/src/templates/default/.agents/skills/scripts/SKILL.md +118 -0
- package/src/templates/default/.agents/skills/self-modifying-code/SKILL.md +79 -0
- package/src/templates/default/.agents/skills/sse-file-watcher/SKILL.md +95 -0
- package/src/templates/default/.claude/settings.json +86 -68
- package/src/templates/default/.prettierrc +5 -5
- package/src/templates/default/AGENTS.md +86 -69
- package/src/templates/default/client/App.tsx +56 -54
- package/src/templates/default/client/global.css +75 -72
- package/src/templates/default/client/lib/utils.ts +1 -1
- package/src/templates/default/client/vite-env.d.ts +1 -1
- package/src/templates/default/components.json +20 -20
- package/src/templates/default/index.html +14 -14
- package/src/templates/default/package.json +43 -43
- package/src/templates/default/postcss.config.js +6 -6
- package/src/templates/default/scripts/hello.ts +20 -20
- package/src/templates/default/scripts/run.ts +9 -9
- package/src/templates/default/server/index.ts +22 -18
- package/src/templates/default/server/node-build.ts +4 -4
- package/src/templates/default/shared/api.ts +6 -6
- package/src/templates/default/tailwind.config.ts +7 -7
- package/src/templates/default/tsconfig.json +3 -3
- package/src/templates/default/vite.config.server.ts +3 -3
- package/src/templates/default/vite.config.ts +3 -3
- package/tsconfig.base.json +41 -41
|
@@ -1,69 +1,86 @@
|
|
|
1
|
-
# {{APP_NAME}} — Agent-Native App
|
|
2
|
-
|
|
3
|
-
## Architecture
|
|
4
|
-
|
|
5
|
-
This is an **@agent-native/core** application — the AI agent and UI share state through files, not a traditional database.
|
|
6
|
-
|
|
7
|
-
### Core Principles
|
|
8
|
-
|
|
9
|
-
1. **Files as database** — All app state lives in files. Both UI and agent read/write the same files.
|
|
10
|
-
2. **All AI through agent chat** — No inline LLM calls. UI delegates to the AI via `sendToAgentChat()` / `agentChat.submit()`.
|
|
11
|
-
3. **Scripts for agent operations** — `pnpm script <name>` dispatches to callable script files in `scripts/`.
|
|
12
|
-
4. **Bidirectional SSE events** — The file watcher keeps the UI in sync when the agent modifies files.
|
|
13
|
-
5. **Agent can update code** — The agent can modify this app's source code directly.
|
|
14
|
-
|
|
15
|
-
### Directory Structure
|
|
16
|
-
|
|
17
|
-
```
|
|
18
|
-
client/ # React frontend (Vite SPA)
|
|
19
|
-
App.tsx # Entry point
|
|
20
|
-
components/ # UI components
|
|
21
|
-
hooks/ # React hooks
|
|
22
|
-
lib/ # Utilities (cn, etc)
|
|
23
|
-
|
|
24
|
-
server/ # Express backend
|
|
25
|
-
index.ts # createAppServer() — routes + middleware
|
|
26
|
-
node-build.ts # Production entry point
|
|
27
|
-
|
|
28
|
-
shared/ # Isomorphic code (imported by both client & server)
|
|
29
|
-
|
|
30
|
-
scripts/ # Agent-callable scripts
|
|
31
|
-
run.ts # Script dispatcher
|
|
32
|
-
*.ts # Individual scripts (pnpm script <name>)
|
|
33
|
-
|
|
34
|
-
data/ # App data files (watched by SSE)
|
|
35
|
-
|
|
36
|
-
.agents/skills/ # Agent skills — detailed guidance for each rule
|
|
37
|
-
```
|
|
38
|
-
|
|
39
|
-
Skills in `.agents/skills/` provide detailed guidance for each architectural rule. Read them before making changes.
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
1
|
+
# {{APP_NAME}} — Agent-Native App
|
|
2
|
+
|
|
3
|
+
## Architecture
|
|
4
|
+
|
|
5
|
+
This is an **@agent-native/core** application — the AI agent and UI share state through files, not a traditional database.
|
|
6
|
+
|
|
7
|
+
### Core Principles
|
|
8
|
+
|
|
9
|
+
1. **Files as database** — All app state lives in files. Both UI and agent read/write the same files.
|
|
10
|
+
2. **All AI through agent chat** — No inline LLM calls. UI delegates to the AI via `sendToAgentChat()` / `agentChat.submit()`.
|
|
11
|
+
3. **Scripts for agent operations** — `pnpm script <name>` dispatches to callable script files in `scripts/`.
|
|
12
|
+
4. **Bidirectional SSE events** — The file watcher keeps the UI in sync when the agent modifies files.
|
|
13
|
+
5. **Agent can update code** — The agent can modify this app's source code directly.
|
|
14
|
+
|
|
15
|
+
### Directory Structure
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
client/ # React frontend (Vite SPA)
|
|
19
|
+
App.tsx # Entry point
|
|
20
|
+
components/ # UI components
|
|
21
|
+
hooks/ # React hooks
|
|
22
|
+
lib/ # Utilities (cn, etc)
|
|
23
|
+
|
|
24
|
+
server/ # Express backend
|
|
25
|
+
index.ts # createAppServer() — routes + middleware
|
|
26
|
+
node-build.ts # Production entry point
|
|
27
|
+
|
|
28
|
+
shared/ # Isomorphic code (imported by both client & server)
|
|
29
|
+
|
|
30
|
+
scripts/ # Agent-callable scripts
|
|
31
|
+
run.ts # Script dispatcher
|
|
32
|
+
*.ts # Individual scripts (pnpm script <name>)
|
|
33
|
+
|
|
34
|
+
data/ # App data files (watched by SSE)
|
|
35
|
+
|
|
36
|
+
.agents/skills/ # Agent skills — detailed guidance for each rule
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Skills in `.agents/skills/` provide detailed guidance for each architectural rule. Read them before making changes.
|
|
40
|
+
|
|
41
|
+
| Skill | When to read |
|
|
42
|
+
| --------------------- | -------------------------------------------------------------- |
|
|
43
|
+
| `files-as-database` | Before storing or reading any app state |
|
|
44
|
+
| `delegate-to-agent` | Before adding LLM calls or AI delegation |
|
|
45
|
+
| `scripts` | Before creating or modifying scripts |
|
|
46
|
+
| `sse-file-watcher` | Before wiring up real-time UI sync |
|
|
47
|
+
| `self-modifying-code` | Before editing source, components, or styles |
|
|
48
|
+
| `frontend-design` | Before building or restyling any UI component, page, or layout |
|
|
49
|
+
|
|
50
|
+
The **`frontend-design`** skill (sourced from [Anthropic's skills library](https://github.com/anthropics/skills/blob/main/skills/frontend-design/SKILL.md)) enforces distinctive, production-grade aesthetics — committing to a clear visual direction and avoiding generic patterns like purple gradients, overused fonts, and cookie-cutter layouts.
|
|
51
|
+
|
|
52
|
+
### Key Patterns
|
|
53
|
+
|
|
54
|
+
**Adding an API route:**
|
|
55
|
+
Edit `server/index.ts`, add your route to `createAppServer()`.
|
|
56
|
+
|
|
57
|
+
**Adding a script:**
|
|
58
|
+
Create `scripts/my-script.ts` exporting `default async function(args: string[])`.
|
|
59
|
+
Run with: `pnpm script my-script --arg value`
|
|
60
|
+
|
|
61
|
+
**Sending to agent chat from UI:**
|
|
62
|
+
|
|
63
|
+
```ts
|
|
64
|
+
import { sendToAgentChat } from "@agent-native/core";
|
|
65
|
+
sendToAgentChat({
|
|
66
|
+
message: "Generate something",
|
|
67
|
+
context: "...",
|
|
68
|
+
submit: true,
|
|
69
|
+
});
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
**Sending to agent chat from scripts:**
|
|
73
|
+
|
|
74
|
+
```ts
|
|
75
|
+
import { agentChat } from "@agent-native/core";
|
|
76
|
+
agentChat.submit("Generate something");
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### Tech Stack
|
|
80
|
+
|
|
81
|
+
- **Framework:** @agent-native/core
|
|
82
|
+
- **Frontend:** React 18, Vite, TailwindCSS, shadcn/ui
|
|
83
|
+
- **Backend:** Express 5
|
|
84
|
+
- **State:** File-based (SSE for real-time updates)
|
|
85
|
+
- **Build:** `pnpm build` (client SPA + server bundle)
|
|
86
|
+
- **Dev:** `pnpm dev` (Vite dev server with Express middleware)
|
|
@@ -1,54 +1,56 @@
|
|
|
1
|
-
import { StrictMode } from "react";
|
|
2
|
-
import { createRoot } from "react-dom/client";
|
|
3
|
-
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
4
|
-
import { useFileWatcher } from "@agent-native/core";
|
|
5
|
-
import "./global.css";
|
|
6
|
-
|
|
7
|
-
const queryClient = new QueryClient();
|
|
8
|
-
|
|
9
|
-
function App() {
|
|
10
|
-
return (
|
|
11
|
-
<QueryClientProvider client={queryClient}>
|
|
12
|
-
<Main />
|
|
13
|
-
</QueryClientProvider>
|
|
14
|
-
);
|
|
15
|
-
}
|
|
16
|
-
|
|
17
|
-
function Main() {
|
|
18
|
-
useFileWatcher({ queryClient });
|
|
19
|
-
|
|
20
|
-
return (
|
|
21
|
-
<div className="min-h-screen bg-background text-foreground flex items-center justify-center">
|
|
22
|
-
<div className="text-center space-y-4">
|
|
23
|
-
<h1 className="text-4xl font-bold">Agent-Native App</h1>
|
|
24
|
-
<p className="text-muted-foreground">
|
|
25
|
-
Edit
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
1
|
+
import { StrictMode } from "react";
|
|
2
|
+
import { createRoot } from "react-dom/client";
|
|
3
|
+
import { QueryClient, QueryClientProvider } from "@tanstack/react-query";
|
|
4
|
+
import { useFileWatcher } from "@agent-native/core";
|
|
5
|
+
import "./global.css";
|
|
6
|
+
|
|
7
|
+
const queryClient = new QueryClient();
|
|
8
|
+
|
|
9
|
+
function App() {
|
|
10
|
+
return (
|
|
11
|
+
<QueryClientProvider client={queryClient}>
|
|
12
|
+
<Main />
|
|
13
|
+
</QueryClientProvider>
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
function Main() {
|
|
18
|
+
useFileWatcher({ queryClient });
|
|
19
|
+
|
|
20
|
+
return (
|
|
21
|
+
<div className="min-h-screen bg-background text-foreground flex items-center justify-center">
|
|
22
|
+
<div className="text-center space-y-4">
|
|
23
|
+
<h1 className="text-4xl font-bold">Agent-Native App</h1>
|
|
24
|
+
<p className="text-muted-foreground">
|
|
25
|
+
Edit{" "}
|
|
26
|
+
<code className="bg-muted px-2 py-1 rounded">client/App.tsx</code> to
|
|
27
|
+
get started.
|
|
28
|
+
</p>
|
|
29
|
+
<p className="text-sm text-muted-foreground">
|
|
30
|
+
API health: <HealthCheck />
|
|
31
|
+
</p>
|
|
32
|
+
</div>
|
|
33
|
+
</div>
|
|
34
|
+
);
|
|
35
|
+
}
|
|
36
|
+
|
|
37
|
+
function HealthCheck() {
|
|
38
|
+
return (
|
|
39
|
+
<span
|
|
40
|
+
className="text-primary cursor-pointer hover:underline"
|
|
41
|
+
onClick={async () => {
|
|
42
|
+
const res = await fetch("/api/ping");
|
|
43
|
+
const data = await res.json();
|
|
44
|
+
alert(data.message);
|
|
45
|
+
}}
|
|
46
|
+
>
|
|
47
|
+
/api/ping
|
|
48
|
+
</span>
|
|
49
|
+
);
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
createRoot(document.getElementById("root")!).render(
|
|
53
|
+
<StrictMode>
|
|
54
|
+
<App />
|
|
55
|
+
</StrictMode>,
|
|
56
|
+
);
|
|
@@ -1,72 +1,75 @@
|
|
|
1
|
-
@tailwind base;
|
|
2
|
-
@tailwind components;
|
|
3
|
-
@tailwind utilities;
|
|
4
|
-
|
|
5
|
-
@layer base {
|
|
6
|
-
:root {
|
|
7
|
-
--background: 240 6% 4%;
|
|
8
|
-
--foreground: 240 6% 93%;
|
|
9
|
-
|
|
10
|
-
--card: 240 5% 8%;
|
|
11
|
-
--card-foreground: 240 6% 93%;
|
|
12
|
-
|
|
13
|
-
--popover: 240 5% 10%;
|
|
14
|
-
--popover-foreground: 240 6% 93%;
|
|
15
|
-
|
|
16
|
-
--primary: 211 100% 64%;
|
|
17
|
-
--primary-foreground: 0 0% 0%;
|
|
18
|
-
|
|
19
|
-
--secondary: 240 4% 14%;
|
|
20
|
-
--secondary-foreground: 240 6% 93%;
|
|
21
|
-
|
|
22
|
-
--muted: 240 4% 14%;
|
|
23
|
-
--muted-foreground: 240 4% 55%;
|
|
24
|
-
|
|
25
|
-
--accent: 240 4% 14%;
|
|
26
|
-
--accent-foreground: 240 6% 93%;
|
|
27
|
-
|
|
28
|
-
--destructive: 0 72% 51%;
|
|
29
|
-
--destructive-foreground: 0 0% 100%;
|
|
30
|
-
|
|
31
|
-
--border: 240 4% 16%;
|
|
32
|
-
--input: 240 4% 16%;
|
|
33
|
-
--ring: 211 100% 64%;
|
|
34
|
-
|
|
35
|
-
--radius: 0.5rem;
|
|
36
|
-
|
|
37
|
-
--sidebar-background: 240 5% 6%;
|
|
38
|
-
--sidebar-foreground: 240 6% 93%;
|
|
39
|
-
--sidebar-primary: 211 100% 64%;
|
|
40
|
-
--sidebar-primary-foreground: 0 0% 0%;
|
|
41
|
-
--sidebar-accent: 240 4% 14%;
|
|
42
|
-
--sidebar-accent-foreground: 240 6% 93%;
|
|
43
|
-
--sidebar-border: 240 4% 16%;
|
|
44
|
-
--sidebar-ring: 211 100% 64%;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
@layer base {
|
|
49
|
-
* {
|
|
50
|
-
@apply border-border;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
body {
|
|
54
|
-
@apply bg-background text-foreground antialiased;
|
|
55
|
-
font-family:
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
::-webkit-scrollbar-
|
|
66
|
-
background:
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
}
|
|
72
|
-
|
|
1
|
+
@tailwind base;
|
|
2
|
+
@tailwind components;
|
|
3
|
+
@tailwind utilities;
|
|
4
|
+
|
|
5
|
+
@layer base {
|
|
6
|
+
:root {
|
|
7
|
+
--background: 240 6% 4%;
|
|
8
|
+
--foreground: 240 6% 93%;
|
|
9
|
+
|
|
10
|
+
--card: 240 5% 8%;
|
|
11
|
+
--card-foreground: 240 6% 93%;
|
|
12
|
+
|
|
13
|
+
--popover: 240 5% 10%;
|
|
14
|
+
--popover-foreground: 240 6% 93%;
|
|
15
|
+
|
|
16
|
+
--primary: 211 100% 64%;
|
|
17
|
+
--primary-foreground: 0 0% 0%;
|
|
18
|
+
|
|
19
|
+
--secondary: 240 4% 14%;
|
|
20
|
+
--secondary-foreground: 240 6% 93%;
|
|
21
|
+
|
|
22
|
+
--muted: 240 4% 14%;
|
|
23
|
+
--muted-foreground: 240 4% 55%;
|
|
24
|
+
|
|
25
|
+
--accent: 240 4% 14%;
|
|
26
|
+
--accent-foreground: 240 6% 93%;
|
|
27
|
+
|
|
28
|
+
--destructive: 0 72% 51%;
|
|
29
|
+
--destructive-foreground: 0 0% 100%;
|
|
30
|
+
|
|
31
|
+
--border: 240 4% 16%;
|
|
32
|
+
--input: 240 4% 16%;
|
|
33
|
+
--ring: 211 100% 64%;
|
|
34
|
+
|
|
35
|
+
--radius: 0.5rem;
|
|
36
|
+
|
|
37
|
+
--sidebar-background: 240 5% 6%;
|
|
38
|
+
--sidebar-foreground: 240 6% 93%;
|
|
39
|
+
--sidebar-primary: 211 100% 64%;
|
|
40
|
+
--sidebar-primary-foreground: 0 0% 0%;
|
|
41
|
+
--sidebar-accent: 240 4% 14%;
|
|
42
|
+
--sidebar-accent-foreground: 240 6% 93%;
|
|
43
|
+
--sidebar-border: 240 4% 16%;
|
|
44
|
+
--sidebar-ring: 211 100% 64%;
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
@layer base {
|
|
49
|
+
* {
|
|
50
|
+
@apply border-border;
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
body {
|
|
54
|
+
@apply bg-background text-foreground antialiased;
|
|
55
|
+
font-family:
|
|
56
|
+
system-ui,
|
|
57
|
+
-apple-system,
|
|
58
|
+
sans-serif;
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
::-webkit-scrollbar {
|
|
62
|
+
width: 6px;
|
|
63
|
+
height: 6px;
|
|
64
|
+
}
|
|
65
|
+
::-webkit-scrollbar-track {
|
|
66
|
+
background: transparent;
|
|
67
|
+
}
|
|
68
|
+
::-webkit-scrollbar-thumb {
|
|
69
|
+
background: hsl(240 4% 20%);
|
|
70
|
+
border-radius: 3px;
|
|
71
|
+
}
|
|
72
|
+
::-webkit-scrollbar-thumb:hover {
|
|
73
|
+
background: hsl(240 4% 28%);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { cn } from "@agent-native/core";
|
|
1
|
+
export { cn } from "@agent-native/core";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
/// <reference types="vite/client" />
|
|
1
|
+
/// <reference types="vite/client" />
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
{
|
|
2
|
-
"$schema": "https://ui.shadcn.com/schema.json",
|
|
3
|
-
"style": "default",
|
|
4
|
-
"rsc": false,
|
|
5
|
-
"tsx": true,
|
|
6
|
-
"tailwind": {
|
|
7
|
-
"config": "tailwind.config.ts",
|
|
8
|
-
"css": "client/global.css",
|
|
9
|
-
"baseColor": "slate",
|
|
10
|
-
"cssVariables": true,
|
|
11
|
-
"prefix": ""
|
|
12
|
-
},
|
|
13
|
-
"aliases": {
|
|
14
|
-
"components": "@/components",
|
|
15
|
-
"utils": "@/lib/utils",
|
|
16
|
-
"ui": "@/components/ui",
|
|
17
|
-
"lib": "@/lib",
|
|
18
|
-
"hooks": "@/hooks"
|
|
19
|
-
}
|
|
20
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://ui.shadcn.com/schema.json",
|
|
3
|
+
"style": "default",
|
|
4
|
+
"rsc": false,
|
|
5
|
+
"tsx": true,
|
|
6
|
+
"tailwind": {
|
|
7
|
+
"config": "tailwind.config.ts",
|
|
8
|
+
"css": "client/global.css",
|
|
9
|
+
"baseColor": "slate",
|
|
10
|
+
"cssVariables": true,
|
|
11
|
+
"prefix": ""
|
|
12
|
+
},
|
|
13
|
+
"aliases": {
|
|
14
|
+
"components": "@/components",
|
|
15
|
+
"utils": "@/lib/utils",
|
|
16
|
+
"ui": "@/components/ui",
|
|
17
|
+
"lib": "@/lib",
|
|
18
|
+
"hooks": "@/hooks"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
<!doctype html>
|
|
2
|
-
<html lang="en" class="dark">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8" />
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
-
<title>{{APP_TITLE}}</title>
|
|
7
|
-
</head>
|
|
8
|
-
|
|
9
|
-
<body>
|
|
10
|
-
<div id="root"></div>
|
|
11
|
-
|
|
12
|
-
<script type="module" src="/client/App.tsx"></script>
|
|
13
|
-
</body>
|
|
14
|
-
</html>
|
|
1
|
+
<!doctype html>
|
|
2
|
+
<html lang="en" class="dark">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8" />
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
6
|
+
<title>{{APP_TITLE}}</title>
|
|
7
|
+
</head>
|
|
8
|
+
|
|
9
|
+
<body>
|
|
10
|
+
<div id="root"></div>
|
|
11
|
+
|
|
12
|
+
<script type="module" src="/client/App.tsx"></script>
|
|
13
|
+
</body>
|
|
14
|
+
</html>
|
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "{{APP_NAME}}",
|
|
3
|
-
"private": true,
|
|
4
|
-
"type": "module",
|
|
5
|
-
"scripts": {
|
|
6
|
-
"dev": "agent-native dev",
|
|
7
|
-
"build": "agent-native build",
|
|
8
|
-
"start": "agent-native start",
|
|
9
|
-
"typecheck": "agent-native typecheck",
|
|
10
|
-
"script": "agent-native script"
|
|
11
|
-
},
|
|
12
|
-
"dependencies": {
|
|
13
|
-
"@agent-native/core": "^0.2.0",
|
|
14
|
-
"dotenv": "^17.2.1",
|
|
15
|
-
"express": "^5.1.0"
|
|
16
|
-
},
|
|
17
|
-
"devDependencies": {
|
|
18
|
-
"@tanstack/react-query": "^5.84.2",
|
|
19
|
-
"@types/cors": "^2.8.19",
|
|
20
|
-
"@types/express": "^5.0.3",
|
|
21
|
-
"@types/node": "^24.2.1",
|
|
22
|
-
"@types/react": "^18.3.23",
|
|
23
|
-
"@types/react-dom": "^18.3.7",
|
|
24
|
-
"@vitejs/plugin-react-swc": "^4.0.0",
|
|
25
|
-
"autoprefixer": "^10.4.21",
|
|
26
|
-
"class-variance-authority": "^0.7.1",
|
|
27
|
-
"clsx": "^2.1.1",
|
|
28
|
-
"cors": "^2.8.5",
|
|
29
|
-
"lucide-react": "^0.539.0",
|
|
30
|
-
"postcss": "^8.5.6",
|
|
31
|
-
"prettier": "^3.6.2",
|
|
32
|
-
"react": "^18.3.1",
|
|
33
|
-
"react-dom": "^18.3.1",
|
|
34
|
-
"react-router-dom": "^6.30.1",
|
|
35
|
-
"sonner": "^1.7.4",
|
|
36
|
-
"tailwind-merge": "^2.6.0",
|
|
37
|
-
"tailwindcss": "^3.4.17",
|
|
38
|
-
"tailwindcss-animate": "^1.0.7",
|
|
39
|
-
"tsx": "^4.20.3",
|
|
40
|
-
"typescript": "^5.9.2",
|
|
41
|
-
"vite": "^7.1.2"
|
|
42
|
-
}
|
|
43
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "{{APP_NAME}}",
|
|
3
|
+
"private": true,
|
|
4
|
+
"type": "module",
|
|
5
|
+
"scripts": {
|
|
6
|
+
"dev": "agent-native dev",
|
|
7
|
+
"build": "agent-native build",
|
|
8
|
+
"start": "agent-native start",
|
|
9
|
+
"typecheck": "agent-native typecheck",
|
|
10
|
+
"script": "agent-native script"
|
|
11
|
+
},
|
|
12
|
+
"dependencies": {
|
|
13
|
+
"@agent-native/core": "^0.2.0",
|
|
14
|
+
"dotenv": "^17.2.1",
|
|
15
|
+
"express": "^5.1.0"
|
|
16
|
+
},
|
|
17
|
+
"devDependencies": {
|
|
18
|
+
"@tanstack/react-query": "^5.84.2",
|
|
19
|
+
"@types/cors": "^2.8.19",
|
|
20
|
+
"@types/express": "^5.0.3",
|
|
21
|
+
"@types/node": "^24.2.1",
|
|
22
|
+
"@types/react": "^18.3.23",
|
|
23
|
+
"@types/react-dom": "^18.3.7",
|
|
24
|
+
"@vitejs/plugin-react-swc": "^4.0.0",
|
|
25
|
+
"autoprefixer": "^10.4.21",
|
|
26
|
+
"class-variance-authority": "^0.7.1",
|
|
27
|
+
"clsx": "^2.1.1",
|
|
28
|
+
"cors": "^2.8.5",
|
|
29
|
+
"lucide-react": "^0.539.0",
|
|
30
|
+
"postcss": "^8.5.6",
|
|
31
|
+
"prettier": "^3.6.2",
|
|
32
|
+
"react": "^18.3.1",
|
|
33
|
+
"react-dom": "^18.3.1",
|
|
34
|
+
"react-router-dom": "^6.30.1",
|
|
35
|
+
"sonner": "^1.7.4",
|
|
36
|
+
"tailwind-merge": "^2.6.0",
|
|
37
|
+
"tailwindcss": "^3.4.17",
|
|
38
|
+
"tailwindcss-animate": "^1.0.7",
|
|
39
|
+
"tsx": "^4.20.3",
|
|
40
|
+
"typescript": "^5.9.2",
|
|
41
|
+
"vite": "^7.1.2"
|
|
42
|
+
}
|
|
43
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export default {
|
|
2
|
-
plugins: {
|
|
3
|
-
tailwindcss: {},
|
|
4
|
-
autoprefixer: {},
|
|
5
|
-
},
|
|
6
|
-
};
|
|
1
|
+
export default {
|
|
2
|
+
plugins: {
|
|
3
|
+
tailwindcss: {},
|
|
4
|
+
autoprefixer: {},
|
|
5
|
+
},
|
|
6
|
+
};
|
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Example script — callable via `pnpm script hello`
|
|
3
|
-
*
|
|
4
|
-
* Scripts export a default async function that receives CLI args.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { parseArgs } from "@agent-native/core";
|
|
8
|
-
import { agentChat } from "@agent-native/core";
|
|
9
|
-
|
|
10
|
-
export default async function hello(args: string[]) {
|
|
11
|
-
const parsed = parseArgs(args);
|
|
12
|
-
const name = parsed.name ?? "world";
|
|
13
|
-
|
|
14
|
-
console.log(`Hello, ${name}!`);
|
|
15
|
-
|
|
16
|
-
// Example: send a message to agent chat (works in Electron context)
|
|
17
|
-
if (parsed["send-chat"] === "true") {
|
|
18
|
-
agentChat.submit(`Hello from the script system! Name: ${name}`);
|
|
19
|
-
}
|
|
20
|
-
}
|
|
1
|
+
/**
|
|
2
|
+
* Example script — callable via `pnpm script hello`
|
|
3
|
+
*
|
|
4
|
+
* Scripts export a default async function that receives CLI args.
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { parseArgs } from "@agent-native/core";
|
|
8
|
+
import { agentChat } from "@agent-native/core";
|
|
9
|
+
|
|
10
|
+
export default async function hello(args: string[]) {
|
|
11
|
+
const parsed = parseArgs(args);
|
|
12
|
+
const name = parsed.name ?? "world";
|
|
13
|
+
|
|
14
|
+
console.log(`Hello, ${name}!`);
|
|
15
|
+
|
|
16
|
+
// Example: send a message to agent chat (works in Electron context)
|
|
17
|
+
if (parsed["send-chat"] === "true") {
|
|
18
|
+
agentChat.submit(`Hello from the script system! Name: ${name}`);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
#!/usr/bin/env tsx
|
|
2
|
-
/**
|
|
3
|
-
* Script dispatcher — runs any script in the scripts/ folder.
|
|
4
|
-
* Usage: pnpm script <script-name> [--args]
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
import { runScript } from "@agent-native/core";
|
|
8
|
-
|
|
9
|
-
runScript();
|
|
1
|
+
#!/usr/bin/env tsx
|
|
2
|
+
/**
|
|
3
|
+
* Script dispatcher — runs any script in the scripts/ folder.
|
|
4
|
+
* Usage: pnpm script <script-name> [--args]
|
|
5
|
+
*/
|
|
6
|
+
|
|
7
|
+
import { runScript } from "@agent-native/core";
|
|
8
|
+
|
|
9
|
+
runScript();
|