@agentuity/cli 0.0.101 → 0.0.102
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/AGENTS.md +19 -188
- package/bin/cli.ts +13 -6
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +41 -12
- package/dist/cli.js.map +1 -1
- package/dist/cmd/ai/index.d.ts.map +1 -1
- package/dist/cmd/ai/index.js +6 -1
- package/dist/cmd/ai/index.js.map +1 -1
- package/dist/cmd/ai/prompt/agent.d.ts +7 -0
- package/dist/cmd/ai/prompt/agent.d.ts.map +1 -1
- package/dist/cmd/ai/prompt/agent.js +12 -323
- package/dist/cmd/ai/prompt/agent.js.map +1 -1
- package/dist/cmd/ai/prompt/api.d.ts +7 -0
- package/dist/cmd/ai/prompt/api.d.ts.map +1 -1
- package/dist/cmd/ai/prompt/api.js +12 -260
- package/dist/cmd/ai/prompt/api.js.map +1 -1
- package/dist/cmd/ai/prompt/version.d.ts +35 -0
- package/dist/cmd/ai/prompt/version.d.ts.map +1 -0
- package/dist/cmd/ai/prompt/version.js +55 -0
- package/dist/cmd/ai/prompt/version.js.map +1 -0
- package/dist/cmd/ai/prompt/web.d.ts +7 -0
- package/dist/cmd/ai/prompt/web.d.ts.map +1 -1
- package/dist/cmd/ai/prompt/web.js +12 -283
- package/dist/cmd/ai/prompt/web.js.map +1 -1
- package/dist/cmd/ai/skills/generate.d.ts +3 -0
- package/dist/cmd/ai/skills/generate.d.ts.map +1 -0
- package/dist/cmd/ai/skills/generate.js +65 -0
- package/dist/cmd/ai/skills/generate.js.map +1 -0
- package/dist/cmd/ai/skills/generator.d.ts +4 -0
- package/dist/cmd/ai/skills/generator.d.ts.map +1 -0
- package/dist/cmd/ai/skills/generator.js +402 -0
- package/dist/cmd/ai/skills/generator.js.map +1 -0
- package/dist/cmd/ai/skills/index.d.ts +4 -0
- package/dist/cmd/ai/skills/index.d.ts.map +1 -0
- package/dist/cmd/ai/skills/index.js +21 -0
- package/dist/cmd/ai/skills/index.js.map +1 -0
- package/dist/cmd/auth/signup.d.ts.map +1 -1
- package/dist/cmd/auth/signup.js +1 -0
- package/dist/cmd/auth/signup.js.map +1 -1
- package/dist/cmd/build/entry-generator.d.ts.map +1 -1
- package/dist/cmd/build/entry-generator.js +40 -5
- package/dist/cmd/build/entry-generator.js.map +1 -1
- package/dist/cmd/build/vite/bun-dev-server.d.ts +7 -1
- package/dist/cmd/build/vite/bun-dev-server.d.ts.map +1 -1
- package/dist/cmd/build/vite/bun-dev-server.js +52 -26
- package/dist/cmd/build/vite/bun-dev-server.js.map +1 -1
- package/dist/cmd/build/vite/metadata-generator.d.ts.map +1 -1
- package/dist/cmd/build/vite/metadata-generator.js +58 -7
- package/dist/cmd/build/vite/metadata-generator.js.map +1 -1
- package/dist/cmd/build/vite/prompt-generator.d.ts +23 -0
- package/dist/cmd/build/vite/prompt-generator.d.ts.map +1 -0
- package/dist/cmd/build/vite/prompt-generator.js +123 -0
- package/dist/cmd/build/vite/prompt-generator.js.map +1 -0
- package/dist/cmd/build/vite/registry-generator.d.ts.map +1 -1
- package/dist/cmd/build/vite/registry-generator.js +28 -11
- package/dist/cmd/build/vite/registry-generator.js.map +1 -1
- package/dist/cmd/build/vite/server-bundler.d.ts +4 -0
- package/dist/cmd/build/vite/server-bundler.d.ts.map +1 -1
- package/dist/cmd/build/vite/server-bundler.js +45 -16
- package/dist/cmd/build/vite/server-bundler.js.map +1 -1
- package/dist/cmd/build/vite/vite-asset-server-config.d.ts.map +1 -1
- package/dist/cmd/build/vite/vite-asset-server-config.js +4 -0
- package/dist/cmd/build/vite/vite-asset-server-config.js.map +1 -1
- package/dist/cmd/build/vite/vite-builder.d.ts.map +1 -1
- package/dist/cmd/build/vite/vite-builder.js +99 -87
- package/dist/cmd/build/vite/vite-builder.js.map +1 -1
- package/dist/cmd/cloud/deploy.d.ts.map +1 -1
- package/dist/cmd/cloud/deploy.js +78 -27
- package/dist/cmd/cloud/deploy.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/create-namespace.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/create-namespace.js +3 -1
- package/dist/cmd/cloud/keyvalue/create-namespace.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/delete-namespace.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/delete-namespace.js +3 -1
- package/dist/cmd/cloud/keyvalue/delete-namespace.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/delete.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/delete.js +3 -1
- package/dist/cmd/cloud/keyvalue/delete.js.map +1 -1
- package/dist/cmd/cloud/keyvalue/set.d.ts.map +1 -1
- package/dist/cmd/cloud/keyvalue/set.js +4 -2
- package/dist/cmd/cloud/keyvalue/set.js.map +1 -1
- package/dist/cmd/cloud/stream/get.d.ts.map +1 -1
- package/dist/cmd/cloud/stream/get.js +2 -13
- package/dist/cmd/cloud/stream/get.js.map +1 -1
- package/dist/cmd/cloud/vector/delete-namespace.d.ts +3 -0
- package/dist/cmd/cloud/vector/delete-namespace.d.ts.map +1 -0
- package/dist/cmd/cloud/vector/delete-namespace.js +77 -0
- package/dist/cmd/cloud/vector/delete-namespace.js.map +1 -0
- package/dist/cmd/cloud/vector/index.d.ts.map +1 -1
- package/dist/cmd/cloud/vector/index.js +21 -4
- package/dist/cmd/cloud/vector/index.js.map +1 -1
- package/dist/cmd/cloud/vector/list-namespaces.d.ts +3 -0
- package/dist/cmd/cloud/vector/list-namespaces.d.ts.map +1 -0
- package/dist/cmd/cloud/vector/list-namespaces.js +42 -0
- package/dist/cmd/cloud/vector/list-namespaces.js.map +1 -0
- package/dist/cmd/cloud/vector/stats.d.ts +3 -0
- package/dist/cmd/cloud/vector/stats.d.ts.map +1 -0
- package/dist/cmd/cloud/vector/stats.js +142 -0
- package/dist/cmd/cloud/vector/stats.js.map +1 -0
- package/dist/cmd/cloud/vector/upsert.d.ts +3 -0
- package/dist/cmd/cloud/vector/upsert.d.ts.map +1 -0
- package/dist/cmd/cloud/vector/upsert.js +192 -0
- package/dist/cmd/cloud/vector/upsert.js.map +1 -0
- package/dist/cmd/dev/file-watcher.d.ts.map +1 -1
- package/dist/cmd/dev/file-watcher.js +90 -31
- package/dist/cmd/dev/file-watcher.js.map +1 -1
- package/dist/cmd/dev/index.d.ts.map +1 -1
- package/dist/cmd/dev/index.js +213 -57
- package/dist/cmd/dev/index.js.map +1 -1
- package/dist/cmd/dev/skills.d.ts +10 -0
- package/dist/cmd/dev/skills.d.ts.map +1 -0
- package/dist/cmd/dev/skills.js +57 -0
- package/dist/cmd/dev/skills.js.map +1 -0
- package/dist/cmd/dev/sync.js +7 -7
- package/dist/cmd/dev/sync.js.map +1 -1
- package/dist/cmd/index.d.ts.map +1 -1
- package/dist/cmd/index.js +1 -0
- package/dist/cmd/index.js.map +1 -1
- package/dist/cmd/project/create.d.ts.map +1 -1
- package/dist/cmd/project/create.js +3 -0
- package/dist/cmd/project/create.js.map +1 -1
- package/dist/cmd/project/template-flow.d.ts +1 -0
- package/dist/cmd/project/template-flow.d.ts.map +1 -1
- package/dist/cmd/project/template-flow.js +30 -5
- package/dist/cmd/project/template-flow.js.map +1 -1
- package/dist/cmd/setup/index.d.ts.map +1 -1
- package/dist/cmd/setup/index.js +1 -0
- package/dist/cmd/setup/index.js.map +1 -1
- package/dist/cmd/upgrade/index.d.ts +15 -0
- package/dist/cmd/upgrade/index.d.ts.map +1 -1
- package/dist/cmd/upgrade/index.js +59 -4
- package/dist/cmd/upgrade/index.js.map +1 -1
- package/dist/domain.d.ts +45 -0
- package/dist/domain.d.ts.map +1 -0
- package/dist/domain.js +200 -0
- package/dist/domain.js.map +1 -0
- package/dist/schema-generator.d.ts +2 -0
- package/dist/schema-generator.d.ts.map +1 -1
- package/dist/schema-generator.js +18 -0
- package/dist/schema-generator.js.map +1 -1
- package/dist/steps.d.ts +1 -1
- package/dist/steps.d.ts.map +1 -1
- package/dist/steps.js +16 -5
- package/dist/steps.js.map +1 -1
- package/dist/tui/prompt.d.ts +1 -2
- package/dist/tui/prompt.d.ts.map +1 -1
- package/dist/tui/prompt.js +8 -4
- package/dist/tui/prompt.js.map +1 -1
- package/dist/tui.d.ts +16 -0
- package/dist/tui.d.ts.map +1 -1
- package/dist/tui.js +23 -2
- package/dist/tui.js.map +1 -1
- package/dist/types.d.ts +9 -2
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +3 -3
- package/dist/types.js.map +1 -1
- package/package.json +4 -4
- package/src/cli.ts +47 -12
- package/src/cmd/ai/index.ts +6 -1
- package/src/cmd/ai/prompt/agent.md +306 -0
- package/src/cmd/ai/prompt/agent.ts +12 -322
- package/src/cmd/ai/prompt/api.md +360 -0
- package/src/cmd/ai/prompt/api.ts +13 -260
- package/src/cmd/ai/prompt/version.ts +61 -0
- package/src/cmd/ai/prompt/web.md +509 -0
- package/src/cmd/ai/prompt/web.ts +12 -282
- package/src/cmd/ai/skills/generate.ts +75 -0
- package/src/cmd/ai/skills/generator.ts +519 -0
- package/src/cmd/ai/skills/index.ts +23 -0
- package/src/cmd/auth/signup.ts +1 -0
- package/src/cmd/build/entry-generator.ts +43 -7
- package/src/cmd/build/vite/bun-dev-server.ts +57 -27
- package/src/cmd/build/vite/metadata-generator.ts +73 -7
- package/src/cmd/build/vite/prompt-generator.ts +169 -0
- package/src/cmd/build/vite/registry-generator.ts +33 -10
- package/src/cmd/build/vite/server-bundler.ts +53 -22
- package/src/cmd/build/vite/vite-asset-server-config.ts +5 -0
- package/src/cmd/build/vite/vite-builder.ts +107 -87
- package/src/cmd/cloud/deploy.ts +99 -31
- package/src/cmd/cloud/keyvalue/create-namespace.ts +3 -1
- package/src/cmd/cloud/keyvalue/delete-namespace.ts +3 -1
- package/src/cmd/cloud/keyvalue/delete.ts +3 -1
- package/src/cmd/cloud/keyvalue/set.ts +4 -2
- package/src/cmd/cloud/stream/get.ts +2 -9
- package/src/cmd/cloud/vector/delete-namespace.ts +89 -0
- package/src/cmd/cloud/vector/index.ts +21 -4
- package/src/cmd/cloud/vector/list-namespaces.ts +46 -0
- package/src/cmd/cloud/vector/stats.ts +160 -0
- package/src/cmd/cloud/vector/upsert.ts +216 -0
- package/src/cmd/dev/file-watcher.ts +101 -32
- package/src/cmd/dev/index.ts +304 -111
- package/src/cmd/dev/skills.ts +82 -0
- package/src/cmd/dev/sync.ts +7 -7
- package/src/cmd/index.ts +1 -0
- package/src/cmd/project/create.ts +3 -0
- package/src/cmd/project/template-flow.ts +37 -5
- package/src/cmd/setup/index.ts +1 -0
- package/src/cmd/upgrade/index.ts +68 -4
- package/src/domain.ts +273 -0
- package/src/schema-generator.ts +23 -0
- package/src/steps.ts +16 -5
- package/src/tui/prompt.ts +11 -5
- package/src/tui.ts +21 -2
- package/src/types/md.d.ts +8 -0
- package/src/types.ts +12 -3
- package/dist/cmd/cloud/domain.d.ts +0 -17
- package/dist/cmd/cloud/domain.d.ts.map +0 -1
- package/dist/cmd/cloud/domain.js +0 -79
- package/dist/cmd/cloud/domain.js.map +0 -1
- package/src/cmd/cloud/domain.ts +0 -100
package/src/cmd/ai/prompt/web.ts
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { createSubcommand } from '../../../types';
|
|
2
2
|
import type { CommandContext } from '../../../types';
|
|
3
3
|
import { getCommand } from '../../../command-prefix';
|
|
4
|
+
import { appendHashComment } from './version';
|
|
5
|
+
import webPromptContent from './web.md' with { type: 'text' };
|
|
4
6
|
|
|
5
7
|
export const webSubcommand = createSubcommand({
|
|
6
8
|
name: 'web',
|
|
@@ -14,288 +16,16 @@ export const webSubcommand = createSubcommand({
|
|
|
14
16
|
},
|
|
15
17
|
});
|
|
16
18
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
## Directory Structure
|
|
23
|
-
|
|
24
|
-
Required files:
|
|
25
|
-
- **App.tsx** (required) - Main React application component
|
|
26
|
-
- **frontend.tsx** (required) - Frontend entry point with client-side rendering
|
|
27
|
-
- **index.html** (required) - HTML template
|
|
28
|
-
- **public/** (optional) - Static assets (images, CSS, JS files)
|
|
29
|
-
|
|
30
|
-
Example structure:
|
|
31
|
-
\`\`\`
|
|
32
|
-
src/web/
|
|
33
|
-
├── App.tsx
|
|
34
|
-
├── frontend.tsx
|
|
35
|
-
├── index.html
|
|
36
|
-
└── public/
|
|
37
|
-
├── styles.css
|
|
38
|
-
├── logo.svg
|
|
39
|
-
└── script.js
|
|
40
|
-
\`\`\`
|
|
41
|
-
|
|
42
|
-
## Creating the Web App
|
|
43
|
-
|
|
44
|
-
### App.tsx - Main Component
|
|
45
|
-
|
|
46
|
-
\`\`\`typescript
|
|
47
|
-
import { AgentuityProvider, useAgent } from '@agentuity/react';
|
|
48
|
-
import { useState } from 'react';
|
|
49
|
-
|
|
50
|
-
export function App() {
|
|
51
|
-
const [name, setName] = useState('World');
|
|
52
|
-
const { run, running, data: greeting } = useAgent('hello');
|
|
53
|
-
|
|
54
|
-
return (
|
|
55
|
-
<div style={{ fontFamily: 'sans-serif', padding: '2rem' }}>
|
|
56
|
-
<AgentuityProvider>
|
|
57
|
-
<h1>Welcome to Agentuity</h1>
|
|
58
|
-
|
|
59
|
-
<input
|
|
60
|
-
type="text"
|
|
61
|
-
value={name}
|
|
62
|
-
onChange={(e) => setName(e.target.value)}
|
|
63
|
-
disabled={running}
|
|
64
|
-
/>
|
|
65
|
-
|
|
66
|
-
<button
|
|
67
|
-
onClick={() => run({ name })}
|
|
68
|
-
disabled={running}
|
|
69
|
-
>
|
|
70
|
-
{running ? 'Running...' : 'Say Hello'}
|
|
71
|
-
</button>
|
|
72
|
-
|
|
73
|
-
<div>{greeting ?? 'Waiting for response'}</div>
|
|
74
|
-
</AgentuityProvider>
|
|
75
|
-
</div>
|
|
76
|
-
);
|
|
77
|
-
}
|
|
78
|
-
\`\`\`
|
|
79
|
-
|
|
80
|
-
### frontend.tsx - Entry Point
|
|
81
|
-
|
|
82
|
-
\`\`\`typescript
|
|
83
|
-
import { createRoot } from 'react-dom/client';
|
|
84
|
-
import { App } from './App';
|
|
85
|
-
|
|
86
|
-
const root = document.getElementById('root');
|
|
87
|
-
if (!root) throw new Error('Root element not found');
|
|
88
|
-
|
|
89
|
-
createRoot(root).render(<App />);
|
|
90
|
-
\`\`\`
|
|
91
|
-
|
|
92
|
-
### index.html - HTML Template
|
|
93
|
-
|
|
94
|
-
\`\`\`html
|
|
95
|
-
<!DOCTYPE html>
|
|
96
|
-
<html lang="en">
|
|
97
|
-
<head>
|
|
98
|
-
<meta charset="UTF-8">
|
|
99
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
100
|
-
<title>My Agentuity App</title>
|
|
101
|
-
</head>
|
|
102
|
-
<body>
|
|
103
|
-
<div id="root"></div>
|
|
104
|
-
<script type="module" src="/web/frontend.tsx"></script>
|
|
105
|
-
</body>
|
|
106
|
-
</html>
|
|
107
|
-
\`\`\`
|
|
108
|
-
|
|
109
|
-
## React Hooks
|
|
110
|
-
|
|
111
|
-
### useAgent - Call Agents
|
|
112
|
-
|
|
113
|
-
\`\`\`typescript
|
|
114
|
-
import { useAgent } from '@agentuity/react';
|
|
115
|
-
|
|
116
|
-
function MyComponent() {
|
|
117
|
-
const { run, running, data, error } = useAgent('myAgent');
|
|
118
|
-
|
|
119
|
-
return (
|
|
120
|
-
<button onClick={() => run({ input: 'value' })}>
|
|
121
|
-
{running ? 'Running...' : 'Call Agent'}
|
|
122
|
-
</button>
|
|
123
|
-
);
|
|
19
|
+
/**
|
|
20
|
+
* Get the raw prompt content without hash.
|
|
21
|
+
*/
|
|
22
|
+
export function getPromptContent(): string {
|
|
23
|
+
return webPromptContent;
|
|
124
24
|
}
|
|
125
|
-
\`\`\`
|
|
126
25
|
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
function MyComponent() {
|
|
133
|
-
const { connected, send, data } = useAgentWebsocket('websocket');
|
|
134
|
-
|
|
135
|
-
return (
|
|
136
|
-
<div>
|
|
137
|
-
<p>Status: {connected ? 'Connected' : 'Disconnected'}</p>
|
|
138
|
-
<button onClick={() => send('Hello')}>Send Message</button>
|
|
139
|
-
<p>Received: {data}</p>
|
|
140
|
-
</div>
|
|
141
|
-
);
|
|
142
|
-
}
|
|
143
|
-
\`\`\`
|
|
144
|
-
|
|
145
|
-
### useAgentEventStream - Server-Sent Events
|
|
146
|
-
|
|
147
|
-
\`\`\`typescript
|
|
148
|
-
import { useAgentEventStream } from '@agentuity/react';
|
|
149
|
-
|
|
150
|
-
function MyComponent() {
|
|
151
|
-
const { connected, data, error } = useAgentEventStream('sse');
|
|
152
|
-
|
|
153
|
-
return (
|
|
154
|
-
<div>
|
|
155
|
-
<p>Connected: {connected ? 'Yes' : 'No'}</p>
|
|
156
|
-
{error && <p>Error: {error.message}</p>}
|
|
157
|
-
<p>Data: {data}</p>
|
|
158
|
-
</div>
|
|
159
|
-
);
|
|
160
|
-
}
|
|
161
|
-
\`\`\`
|
|
162
|
-
|
|
163
|
-
## Complete Example
|
|
164
|
-
|
|
165
|
-
\`\`\`typescript
|
|
166
|
-
import { AgentuityProvider, useAgent, useAgentWebsocket } from '@agentuity/react';
|
|
167
|
-
import { useEffect, useState } from 'react';
|
|
168
|
-
|
|
169
|
-
export function App() {
|
|
170
|
-
const [count, setCount] = useState(0);
|
|
171
|
-
const { run, data: agentResult } = useAgent('simple');
|
|
172
|
-
const { connected, send, data: wsMessage } = useAgentWebsocket('websocket');
|
|
173
|
-
|
|
174
|
-
useEffect(() => {
|
|
175
|
-
// Send WebSocket message every second
|
|
176
|
-
const interval = setInterval(() => {
|
|
177
|
-
send(\`Message at \${new Date().toISOString()}\`);
|
|
178
|
-
}, 1000);
|
|
179
|
-
return () => clearInterval(interval);
|
|
180
|
-
}, [send]);
|
|
181
|
-
|
|
182
|
-
return (
|
|
183
|
-
<div style={{ fontFamily: 'sans-serif', padding: '2rem' }}>
|
|
184
|
-
<AgentuityProvider>
|
|
185
|
-
<h1>My Agentuity App</h1>
|
|
186
|
-
|
|
187
|
-
<div>
|
|
188
|
-
<p>Count: {count}</p>
|
|
189
|
-
<button onClick={() => setCount(c => c + 1)}>
|
|
190
|
-
Increment
|
|
191
|
-
</button>
|
|
192
|
-
</div>
|
|
193
|
-
|
|
194
|
-
<div>
|
|
195
|
-
<button onClick={() => run({ name: 'Jeff', age: 30 })}>
|
|
196
|
-
Call Agent
|
|
197
|
-
</button>
|
|
198
|
-
<p>{agentResult}</p>
|
|
199
|
-
</div>
|
|
200
|
-
|
|
201
|
-
<div>
|
|
202
|
-
<strong>WebSocket:</strong>
|
|
203
|
-
{connected ? JSON.stringify(wsMessage) : 'Not connected'}
|
|
204
|
-
</div>
|
|
205
|
-
</AgentuityProvider>
|
|
206
|
-
</div>
|
|
207
|
-
);
|
|
208
|
-
}
|
|
209
|
-
\`\`\`
|
|
210
|
-
|
|
211
|
-
## Static Assets
|
|
212
|
-
|
|
213
|
-
Place static files in the **public/** folder:
|
|
214
|
-
|
|
215
|
-
\`\`\`
|
|
216
|
-
src/web/public/
|
|
217
|
-
├── logo.svg
|
|
218
|
-
├── styles.css
|
|
219
|
-
└── script.js
|
|
220
|
-
\`\`\`
|
|
221
|
-
|
|
222
|
-
Reference them in your HTML or components:
|
|
223
|
-
|
|
224
|
-
\`\`\`html
|
|
225
|
-
<!-- In index.html -->
|
|
226
|
-
<link rel="stylesheet" href="/public/styles.css">
|
|
227
|
-
<script src="/public/script.js"></script>
|
|
228
|
-
\`\`\`
|
|
229
|
-
|
|
230
|
-
\`\`\`typescript
|
|
231
|
-
// In React components
|
|
232
|
-
<img src="/public/logo.svg" alt="Logo" />
|
|
233
|
-
\`\`\`
|
|
234
|
-
|
|
235
|
-
## Styling
|
|
236
|
-
|
|
237
|
-
### Inline Styles
|
|
238
|
-
|
|
239
|
-
\`\`\`typescript
|
|
240
|
-
<div style={{ backgroundColor: '#000', color: '#fff', padding: '1rem' }}>
|
|
241
|
-
Styled content
|
|
242
|
-
</div>
|
|
243
|
-
\`\`\`
|
|
244
|
-
|
|
245
|
-
### CSS Files
|
|
246
|
-
|
|
247
|
-
Create \`public/styles.css\`:
|
|
248
|
-
|
|
249
|
-
\`\`\`css
|
|
250
|
-
body {
|
|
251
|
-
background-color: #09090b;
|
|
252
|
-
color: #fff;
|
|
253
|
-
font-family: sans-serif;
|
|
254
|
-
}
|
|
255
|
-
\`\`\`
|
|
256
|
-
|
|
257
|
-
Import in \`index.html\`:
|
|
258
|
-
|
|
259
|
-
\`\`\`html
|
|
260
|
-
<link rel="stylesheet" href="/public/styles.css">
|
|
261
|
-
\`\`\`
|
|
262
|
-
|
|
263
|
-
### Style Tag in Component
|
|
264
|
-
|
|
265
|
-
\`\`\`typescript
|
|
266
|
-
<div>
|
|
267
|
-
<button className="glow-btn">Click me</button>
|
|
268
|
-
<style>{\`
|
|
269
|
-
.glow-btn {
|
|
270
|
-
background: linear-gradient(to right, #155e75, #3b82f6);
|
|
271
|
-
border: none;
|
|
272
|
-
padding: 0.75rem 1.5rem;
|
|
273
|
-
color: white;
|
|
274
|
-
cursor: pointer;
|
|
275
|
-
}
|
|
276
|
-
\`}</style>
|
|
277
|
-
</div>
|
|
278
|
-
\`\`\`
|
|
279
|
-
|
|
280
|
-
## Best Practices
|
|
281
|
-
|
|
282
|
-
- Wrap your app with **AgentuityProvider** for hooks to work
|
|
283
|
-
- Use **useAgent** for one-off agent calls
|
|
284
|
-
- Use **useAgentWebsocket** for bidirectional real-time communication
|
|
285
|
-
- Use **useAgentEventStream** for server-to-client streaming
|
|
286
|
-
- Place reusable components in separate files
|
|
287
|
-
- Keep static assets in the **public/** folder
|
|
288
|
-
- Use TypeScript for type safety
|
|
289
|
-
- Handle loading and error states in UI
|
|
290
|
-
|
|
291
|
-
## Rules
|
|
292
|
-
|
|
293
|
-
- **App.tsx** must export a function named \`App\`
|
|
294
|
-
- **frontend.tsx** must render the \`App\` component to \`#root\`
|
|
295
|
-
- **index.html** must have a \`<div id="root"></div>\`
|
|
296
|
-
- All agents are accessible via \`useAgent('agentName')\`
|
|
297
|
-
- The web app is served at \`/\` by default
|
|
298
|
-
- Static files in \`public/\` are served at \`/public/*\`
|
|
299
|
-
- Module script tag: \`<script type="module" src="/web/frontend.tsx"></script>\`
|
|
300
|
-
`;
|
|
26
|
+
/**
|
|
27
|
+
* Generate the web prompt with hash comment.
|
|
28
|
+
*/
|
|
29
|
+
export function generateLLMPrompt(): string {
|
|
30
|
+
return appendHashComment(webPromptContent);
|
|
301
31
|
}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { createSubcommand, type CommandContext } from '../../../types';
|
|
3
|
+
import { getCommand } from '../../../command-prefix';
|
|
4
|
+
import { ErrorCode } from '../../../errors';
|
|
5
|
+
import type { CLISchema } from '../../../schema-generator';
|
|
6
|
+
import * as tui from '../../../tui';
|
|
7
|
+
import * as path from 'node:path';
|
|
8
|
+
import { generateSkills, collectSkillsForPreview } from './generator';
|
|
9
|
+
|
|
10
|
+
const OptionsSchema = z.object({
|
|
11
|
+
output: z.string().describe('Output directory for generated skills'),
|
|
12
|
+
includeHidden: z.boolean().default(false).describe('Include hidden commands'),
|
|
13
|
+
});
|
|
14
|
+
|
|
15
|
+
export const generateSubcommand = createSubcommand({
|
|
16
|
+
name: 'generate',
|
|
17
|
+
description: 'Generate Agent Skills from CLI schema',
|
|
18
|
+
tags: ['fast'],
|
|
19
|
+
idempotent: true,
|
|
20
|
+
examples: [
|
|
21
|
+
{
|
|
22
|
+
command: getCommand('ai skills generate --output ./skills'),
|
|
23
|
+
description: 'Generate skills to a directory',
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
command: getCommand('--dry-run ai skills generate --output ./skills'),
|
|
27
|
+
description: 'Preview without writing files',
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
command: getCommand('ai skills generate --output ./skills --include-hidden'),
|
|
31
|
+
description: 'Include hidden commands',
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
schema: {
|
|
35
|
+
options: OptionsSchema,
|
|
36
|
+
},
|
|
37
|
+
async handler(ctx: CommandContext<undefined, undefined, undefined, typeof OptionsSchema>) {
|
|
38
|
+
const { logger, opts, options } = ctx;
|
|
39
|
+
const { output, includeHidden } = opts;
|
|
40
|
+
const dryRun = options.dryRun === true;
|
|
41
|
+
|
|
42
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
43
|
+
const schema = (global as any).__CLI_SCHEMA__ as CLISchema | undefined;
|
|
44
|
+
|
|
45
|
+
if (!schema) {
|
|
46
|
+
return logger.fatal('Schema not available. This is a CLI bug.', ErrorCode.INTERNAL_ERROR);
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
const baseDir = path.join(output, 'skills', 'agentuity', 'cli');
|
|
50
|
+
|
|
51
|
+
if (dryRun) {
|
|
52
|
+
const skills = collectSkillsForPreview(schema, output, includeHidden);
|
|
53
|
+
if (skills.length === 0) {
|
|
54
|
+
logger.warn('No skills to generate');
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
tui.info(`Would generate ${skills.length} skills:`);
|
|
58
|
+
for (const skillPath of skills) {
|
|
59
|
+
console.log(tui.muted(` ${skillPath}`));
|
|
60
|
+
}
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const created = await generateSkills(schema, output, includeHidden);
|
|
65
|
+
|
|
66
|
+
if (created === 0) {
|
|
67
|
+
logger.warn('No skills to generate');
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
tui.success(`Generated ${created} skills to ${baseDir}`);
|
|
72
|
+
},
|
|
73
|
+
});
|
|
74
|
+
|
|
75
|
+
export default generateSubcommand;
|