@neetru/cli 2.13.1 → 2.15.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.
Files changed (61) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/dist/commands/ai.js +8 -8
  3. package/dist/commands/autocomplete.d.ts +1 -1
  4. package/dist/commands/autocomplete.js +1 -0
  5. package/dist/commands/autocomplete.js.map +1 -1
  6. package/dist/commands/code.d.ts +27 -0
  7. package/dist/commands/code.js +469 -0
  8. package/dist/commands/code.js.map +1 -0
  9. package/dist/commands/fn.d.ts +6 -0
  10. package/dist/commands/fn.js +88 -0
  11. package/dist/commands/fn.js.map +1 -0
  12. package/dist/commands/init.js +147 -147
  13. package/dist/commands/marketplace.d.ts +36 -0
  14. package/dist/commands/marketplace.js +585 -0
  15. package/dist/commands/marketplace.js.map +1 -0
  16. package/dist/commands/ui.d.ts +1 -1
  17. package/dist/commands/ui.js +9 -0
  18. package/dist/commands/ui.js.map +1 -1
  19. package/dist/index.js +19 -2
  20. package/dist/index.js.map +1 -1
  21. package/dist/lib/ai/context.js +91 -91
  22. package/dist/lib/ai/orchestrator.js +7 -43
  23. package/dist/lib/ai/orchestrator.js.map +1 -1
  24. package/dist/lib/api-client.d.ts +1 -0
  25. package/dist/lib/api-client.js +4 -3
  26. package/dist/lib/api-client.js.map +1 -1
  27. package/dist/lib/code-agent-files.d.ts +47 -0
  28. package/dist/lib/code-agent-files.js +468 -0
  29. package/dist/lib/code-agent-files.js.map +1 -0
  30. package/dist/lib/code-agent-gateway.d.ts +27 -0
  31. package/dist/lib/code-agent-gateway.js +115 -0
  32. package/dist/lib/code-agent-gateway.js.map +1 -0
  33. package/dist/lib/code-agent-protocol.d.ts +24 -0
  34. package/dist/lib/code-agent-protocol.js +56 -0
  35. package/dist/lib/code-agent-protocol.js.map +1 -0
  36. package/dist/lib/code-agent-session.d.ts +54 -0
  37. package/dist/lib/code-agent-session.js +147 -0
  38. package/dist/lib/code-agent-session.js.map +1 -0
  39. package/dist/lib/code-agent-settings.d.ts +20 -0
  40. package/dist/lib/code-agent-settings.js +38 -0
  41. package/dist/lib/code-agent-settings.js.map +1 -0
  42. package/dist/lib/code-agent-tools.d.ts +17 -0
  43. package/dist/lib/code-agent-tools.js +52 -0
  44. package/dist/lib/code-agent-tools.js.map +1 -0
  45. package/dist/lib/code-agent-types.d.ts +34 -0
  46. package/dist/lib/code-agent-types.js +7 -0
  47. package/dist/lib/code-agent-types.js.map +1 -0
  48. package/dist/lib/code-agent-ui.d.ts +30 -0
  49. package/dist/lib/code-agent-ui.js +258 -0
  50. package/dist/lib/code-agent-ui.js.map +1 -0
  51. package/dist/lib/sse.d.ts +14 -0
  52. package/dist/lib/sse.js +43 -0
  53. package/dist/lib/sse.js.map +1 -0
  54. package/package.json +1 -1
  55. package/templates/auth/callback.ts +22 -22
  56. package/templates/auth/sign-in.tsx +41 -41
  57. package/templates/billing/checkout.ts +22 -22
  58. package/templates/billing/page.tsx +43 -43
  59. package/templates/support/ticket-form.tsx +68 -68
  60. package/templates/usage/track.ts +30 -30
  61. package/templates/users/profile.tsx +43 -43
@@ -1,68 +1,68 @@
1
- /**
2
- * Template — `src/lib/neetru/support/ticket-form.tsx` (gerado por `neetru add support`).
3
- *
4
- * Form de suporte: cria ticket via SDK.
5
- */
6
- 'use client';
7
-
8
- import { useState } from 'react';
9
- import { createNeetruClient } from '@neetru/sdk';
10
-
11
- const client = createNeetruClient({
12
- apiKey: process.env.NEXT_PUBLIC_NEETRU_API_KEY,
13
- });
14
-
15
- export function SupportTicketForm() {
16
- const [subject, setSubject] = useState('');
17
- const [message, setMessage] = useState('');
18
- const [submitting, setSubmitting] = useState(false);
19
- const [result, setResult] = useState<string | null>(null);
20
-
21
- async function handleSubmit(e: React.FormEvent) {
22
- e.preventDefault();
23
- setSubmitting(true);
24
- try {
25
- const ticket = await client.support.createTicket({ subject, message });
26
- setResult(`Ticket criado: ${ticket.id}`);
27
- setSubject('');
28
- setMessage('');
29
- } catch (err) {
30
- setResult('Falha ao criar ticket.');
31
- console.error(err);
32
- } finally {
33
- setSubmitting(false);
34
- }
35
- }
36
-
37
- return (
38
- <form onSubmit={handleSubmit} className="grid gap-3 max-w-md">
39
- <label className="grid gap-1">
40
- <span className="text-sm font-medium">Assunto</span>
41
- <input
42
- required
43
- value={subject}
44
- onChange={(e) => setSubject(e.target.value)}
45
- className="border px-3 py-2"
46
- />
47
- </label>
48
- <label className="grid gap-1">
49
- <span className="text-sm font-medium">Mensagem</span>
50
- <textarea
51
- required
52
- rows={5}
53
- value={message}
54
- onChange={(e) => setMessage(e.target.value)}
55
- className="border px-3 py-2"
56
- />
57
- </label>
58
- <button
59
- type="submit"
60
- disabled={submitting}
61
- className="px-4 py-2 bg-zinc-900 text-white"
62
- >
63
- {submitting ? 'Enviando...' : 'Enviar'}
64
- </button>
65
- {result && <p className="text-sm">{result}</p>}
66
- </form>
67
- );
68
- }
1
+ /**
2
+ * Template — `src/lib/neetru/support/ticket-form.tsx` (gerado por `neetru add support`).
3
+ *
4
+ * Form de suporte: cria ticket via SDK.
5
+ */
6
+ 'use client';
7
+
8
+ import { useState } from 'react';
9
+ import { createNeetruClient } from '@neetru/sdk';
10
+
11
+ const client = createNeetruClient({
12
+ apiKey: process.env.NEXT_PUBLIC_NEETRU_API_KEY,
13
+ });
14
+
15
+ export function SupportTicketForm() {
16
+ const [subject, setSubject] = useState('');
17
+ const [message, setMessage] = useState('');
18
+ const [submitting, setSubmitting] = useState(false);
19
+ const [result, setResult] = useState<string | null>(null);
20
+
21
+ async function handleSubmit(e: React.FormEvent) {
22
+ e.preventDefault();
23
+ setSubmitting(true);
24
+ try {
25
+ const ticket = await client.support.createTicket({ subject, message });
26
+ setResult(`Ticket criado: ${ticket.id}`);
27
+ setSubject('');
28
+ setMessage('');
29
+ } catch (err) {
30
+ setResult('Falha ao criar ticket.');
31
+ console.error(err);
32
+ } finally {
33
+ setSubmitting(false);
34
+ }
35
+ }
36
+
37
+ return (
38
+ <form onSubmit={handleSubmit} className="grid gap-3 max-w-md">
39
+ <label className="grid gap-1">
40
+ <span className="text-sm font-medium">Assunto</span>
41
+ <input
42
+ required
43
+ value={subject}
44
+ onChange={(e) => setSubject(e.target.value)}
45
+ className="border px-3 py-2"
46
+ />
47
+ </label>
48
+ <label className="grid gap-1">
49
+ <span className="text-sm font-medium">Mensagem</span>
50
+ <textarea
51
+ required
52
+ rows={5}
53
+ value={message}
54
+ onChange={(e) => setMessage(e.target.value)}
55
+ className="border px-3 py-2"
56
+ />
57
+ </label>
58
+ <button
59
+ type="submit"
60
+ disabled={submitting}
61
+ className="px-4 py-2 bg-zinc-900 text-white"
62
+ >
63
+ {submitting ? 'Enviando...' : 'Enviar'}
64
+ </button>
65
+ {result && <p className="text-sm">{result}</p>}
66
+ </form>
67
+ );
68
+ }
@@ -1,30 +1,30 @@
1
- /**
2
- * Template — `src/lib/neetru/usage/track.ts` (gerado por `neetru add usage`).
3
- *
4
- * Helper para reportar uso de resources metered ao Core.
5
- *
6
- * @example
7
- * ```ts
8
- * import { reportApiCall } from '@/lib/neetru/usage/track';
9
- * await reportApiCall();
10
- * ```
11
- */
12
- import { createNeetruClient } from '@neetru/sdk';
13
-
14
- const client = createNeetruClient({
15
- apiKey: process.env.NEETRU_API_KEY,
16
- productId: process.env.NEETRU_PRODUCT_ID,
17
- tenantId: process.env.NEETRU_TENANT_ID,
18
- });
19
-
20
- export async function reportApiCall(qty = 1): Promise<void> {
21
- try {
22
- await client.usage.report('api_calls', qty);
23
- } catch (err) {
24
- console.warn('usage.report failed', err);
25
- }
26
- }
27
-
28
- export async function checkApiCallLimit() {
29
- return client.usage.check('api_calls');
30
- }
1
+ /**
2
+ * Template — `src/lib/neetru/usage/track.ts` (gerado por `neetru add usage`).
3
+ *
4
+ * Helper para reportar uso de resources metered ao Core.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * import { reportApiCall } from '@/lib/neetru/usage/track';
9
+ * await reportApiCall();
10
+ * ```
11
+ */
12
+ import { createNeetruClient } from '@neetru/sdk';
13
+
14
+ const client = createNeetruClient({
15
+ apiKey: process.env.NEETRU_API_KEY,
16
+ productId: process.env.NEETRU_PRODUCT_ID,
17
+ tenantId: process.env.NEETRU_TENANT_ID,
18
+ });
19
+
20
+ export async function reportApiCall(qty = 1): Promise<void> {
21
+ try {
22
+ await client.usage.report('api_calls', qty);
23
+ } catch (err) {
24
+ console.warn('usage.report failed', err);
25
+ }
26
+ }
27
+
28
+ export async function checkApiCallLimit() {
29
+ return client.usage.check('api_calls');
30
+ }
@@ -1,43 +1,43 @@
1
- /**
2
- * Template — `src/lib/neetru/users/profile.tsx` (gerado por `neetru add users`).
3
- *
4
- * Componente de perfil mostra dados do user via SDK.
5
- */
6
- 'use client';
7
-
8
- import { useEffect, useState } from 'react';
9
- import { createNeetruClient, type NeetruUser } from '@neetru/sdk';
10
-
11
- const client = createNeetruClient({
12
- apiKey: process.env.NEXT_PUBLIC_NEETRU_API_KEY,
13
- });
14
-
15
- export function UserProfile() {
16
- const [user, setUser] = useState<NeetruUser | null>(null);
17
- useEffect(() => {
18
- return client.auth.onAuthStateChanged(setUser);
19
- }, []);
20
-
21
- if (!user) return <p>Não autenticado.</p>;
22
-
23
- return (
24
- <div className="border p-4">
25
- <p>
26
- <strong>Nome:</strong> {user.displayName ?? '—'}
27
- </p>
28
- <p>
29
- <strong>Email:</strong> {user.email}
30
- </p>
31
- <p>
32
- <strong>UID:</strong> {user.uid}
33
- </p>
34
- <button
35
- type="button"
36
- onClick={() => client.auth.signOut()}
37
- className="mt-4 px-3 py-1 border"
38
- >
39
- Sair
40
- </button>
41
- </div>
42
- );
43
- }
1
+ /**
2
+ * Template — `src/lib/neetru/users/profile.tsx` (gerado por `neetru add users`).
3
+ *
4
+ * Componente de perfil mostra dados do user via SDK.
5
+ */
6
+ 'use client';
7
+
8
+ import { useEffect, useState } from 'react';
9
+ import { createNeetruClient, type NeetruUser } from '@neetru/sdk';
10
+
11
+ const client = createNeetruClient({
12
+ apiKey: process.env.NEXT_PUBLIC_NEETRU_API_KEY,
13
+ });
14
+
15
+ export function UserProfile() {
16
+ const [user, setUser] = useState<NeetruUser | null>(null);
17
+ useEffect(() => {
18
+ return client.auth.onAuthStateChanged(setUser);
19
+ }, []);
20
+
21
+ if (!user) return <p>Não autenticado.</p>;
22
+
23
+ return (
24
+ <div className="border p-4">
25
+ <p>
26
+ <strong>Nome:</strong> {user.displayName ?? '—'}
27
+ </p>
28
+ <p>
29
+ <strong>Email:</strong> {user.email}
30
+ </p>
31
+ <p>
32
+ <strong>UID:</strong> {user.uid}
33
+ </p>
34
+ <button
35
+ type="button"
36
+ onClick={() => client.auth.signOut()}
37
+ className="mt-4 px-3 py-1 border"
38
+ >
39
+ Sair
40
+ </button>
41
+ </div>
42
+ );
43
+ }