aigma 0.1.1 → 0.1.2
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 +168 -0
- package/README.md +14 -1
- package/dist/commands/agent-help.js +26 -0
- package/dist/commands/agent-help.js.map +1 -0
- package/dist/commands/create-canvas.js +50 -0
- package/dist/commands/create-canvas.js.map +1 -0
- package/dist/commands/create-node.js +8 -2
- package/dist/commands/create-node.js.map +1 -1
- package/dist/commands/list-canvases.js +52 -0
- package/dist/commands/list-canvases.js.map +1 -0
- package/dist/index.js +41 -0
- package/dist/index.js.map +1 -1
- package/package.json +3 -2
package/AGENTS.md
ADDED
|
@@ -0,0 +1,168 @@
|
|
|
1
|
+
# aigma — Agent Integration Guide
|
|
2
|
+
|
|
3
|
+
This file is for AI agents using the `aigma` CLI. If you are an agent and just installed `aigma`, read this end-to-end before issuing other commands.
|
|
4
|
+
|
|
5
|
+
Run `aigma agent-help` at any time to print this document.
|
|
6
|
+
|
|
7
|
+
## What `aigma` does
|
|
8
|
+
|
|
9
|
+
`aigma` lets you create HTML "nodes" on a user's Aigma canvas from the command line. Each call to `aigma create-node`:
|
|
10
|
+
|
|
11
|
+
1. Generates a self-contained HTML fragment from your prompt.
|
|
12
|
+
2. Publishes it to a public URL: `https://aigma.co/p/{slug}`.
|
|
13
|
+
3. Drops a draft node onto the user's canvas. The user sees it within ~5s of opening that canvas in the web app.
|
|
14
|
+
|
|
15
|
+
A user can have **multiple canvases** (think of them as separate projects). You should usually target a specific canvas; otherwise the draft lands on the user's most-recently-edited canvas.
|
|
16
|
+
|
|
17
|
+
## Authentication
|
|
18
|
+
|
|
19
|
+
`aigma login` is interactive — it opens a browser. **You cannot run `aigma login` autonomously.** If `aigma create-node` exits with code `3` ("Not authenticated"), report this back to the user and ask them to run `aigma login` themselves.
|
|
20
|
+
|
|
21
|
+
Once the user has logged in, credentials live at `~/.aigma/credentials.json` and the CLI handles refresh transparently.
|
|
22
|
+
|
|
23
|
+
## Recommended workflow
|
|
24
|
+
|
|
25
|
+
```
|
|
26
|
+
1. aigma list-canvases --json
|
|
27
|
+
2. Choose / create a canvas (see below)
|
|
28
|
+
3. aigma create-node --prompt "..." --canvas <id> --json
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Step 1 — list canvases
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
aigma list-canvases --json
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
Returns:
|
|
38
|
+
|
|
39
|
+
```json
|
|
40
|
+
{
|
|
41
|
+
"ok": true,
|
|
42
|
+
"canvases": [
|
|
43
|
+
{
|
|
44
|
+
"id": "uuid",
|
|
45
|
+
"name": "SaaS Landing",
|
|
46
|
+
"created_at": "2026-04-01T...",
|
|
47
|
+
"updated_at": "2026-05-08T...",
|
|
48
|
+
"node_count": 12,
|
|
49
|
+
"frames": [
|
|
50
|
+
{ "id": "uuid", "name": "Hero section", "type": "webframe" },
|
|
51
|
+
{ "id": "uuid", "name": "Pricing table", "type": "webframe" }
|
|
52
|
+
]
|
|
53
|
+
}
|
|
54
|
+
]
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
`name` is user-chosen. `frames[]` lists the top-level frames already on that canvas with their AI-generated names — use these to judge what each canvas is about.
|
|
59
|
+
|
|
60
|
+
### Step 2 — pick or create a canvas
|
|
61
|
+
|
|
62
|
+
Decision rule:
|
|
63
|
+
|
|
64
|
+
- If the user's task clearly refers to an existing project and one canvas's `name` or `frames[].name` matches, use that canvas's `id`.
|
|
65
|
+
- If nothing fits, or the user is starting something new, create a canvas:
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
aigma create-canvas --name "Landing v2" --json
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
Response:
|
|
72
|
+
|
|
73
|
+
```json
|
|
74
|
+
{
|
|
75
|
+
"ok": true,
|
|
76
|
+
"canvas": { "id": "uuid", "name": "Landing v2", ... }
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
Use the returned `id` for the next step.
|
|
81
|
+
|
|
82
|
+
### Step 3 — create the node
|
|
83
|
+
|
|
84
|
+
```bash
|
|
85
|
+
aigma create-node \
|
|
86
|
+
--prompt "Hero section for an AI photo editor with two CTAs and product screenshot" \
|
|
87
|
+
--canvas <uuid> \
|
|
88
|
+
--json
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
Response:
|
|
92
|
+
|
|
93
|
+
```json
|
|
94
|
+
{
|
|
95
|
+
"ok": true,
|
|
96
|
+
"node_id": "uuid",
|
|
97
|
+
"draft_id": "uuid",
|
|
98
|
+
"html": "<section>...</section>",
|
|
99
|
+
"slug": "abc1234",
|
|
100
|
+
"public_url": "https://aigma.co/p/abc1234",
|
|
101
|
+
"canvas_url": "https://aigma.co/nodes?draft=uuid",
|
|
102
|
+
"canvas": { "id": "uuid", "name": "Landing v2" }
|
|
103
|
+
}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
The user can immediately:
|
|
107
|
+
- Visit `public_url` to see the rendered page.
|
|
108
|
+
- Open the canvas (`canvas_url` deep-links to it) and the WebFrame appears within ~5s.
|
|
109
|
+
|
|
110
|
+
## --canvas argument
|
|
111
|
+
|
|
112
|
+
You can pass either:
|
|
113
|
+
- A UUID: `--canvas 0f6e2b1a-...`
|
|
114
|
+
- An exact (case-insensitive) name: `--canvas "SaaS Landing"`
|
|
115
|
+
|
|
116
|
+
If a name matches multiple canvases, the server returns HTTP 400 with a `matches` array — re-issue the call with one of the listed UUIDs.
|
|
117
|
+
|
|
118
|
+
If `--canvas` is omitted entirely, the server defaults to the user's most-recently-updated canvas. Prefer being explicit.
|
|
119
|
+
|
|
120
|
+
## Output discipline
|
|
121
|
+
|
|
122
|
+
| Stream | Content |
|
|
123
|
+
|---|---|
|
|
124
|
+
| stdout | JSON only when `--json` is passed. Pipe-safe (`aigma … --json \| jq`). |
|
|
125
|
+
| stderr | Human-readable progress and errors. |
|
|
126
|
+
|
|
127
|
+
Always use `--json` when scripting.
|
|
128
|
+
|
|
129
|
+
## Exit codes
|
|
130
|
+
|
|
131
|
+
| Code | Meaning | Recovery |
|
|
132
|
+
|---|---|---|
|
|
133
|
+
| 0 | Success | continue |
|
|
134
|
+
| 1 | Generic failure | inspect stderr / `error` field in JSON |
|
|
135
|
+
| 2 | Validation error (missing/bad args) | fix args |
|
|
136
|
+
| 3 | Auth required | tell the user to run `aigma login` |
|
|
137
|
+
|
|
138
|
+
## Iteration
|
|
139
|
+
|
|
140
|
+
You can call `create-node` repeatedly — every call creates a new node, so variations sit side-by-side on the canvas. To replace a node you don't want, the user can delete it manually in the web app (no CLI delete command in v0.2).
|
|
141
|
+
|
|
142
|
+
## Constraints worth knowing
|
|
143
|
+
|
|
144
|
+
- Prompt is capped at 4000 characters.
|
|
145
|
+
- The HTML fragment is rendered inside a 1280×800 frame on the canvas. Don't include `<html>`, `<head>`, or `<body>` wrappers — the model is instructed to avoid them but you can mention "single self-contained block" in your prompt for safety.
|
|
146
|
+
- No `<script>` tags will be generated.
|
|
147
|
+
- Token usage is metered against the user's Aigma plan. A 429 means they hit their limit.
|
|
148
|
+
|
|
149
|
+
## Configuration
|
|
150
|
+
|
|
151
|
+
Override defaults via env (rarely needed):
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
AIGMA_SUPABASE_URL=...
|
|
155
|
+
AIGMA_SUPABASE_ANON_KEY=...
|
|
156
|
+
AIGMA_WEB_BASE=...
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Quickref
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
aigma login # interactive — user only
|
|
163
|
+
aigma list-canvases --json
|
|
164
|
+
aigma create-canvas --name "Project" --json
|
|
165
|
+
aigma create-node --prompt "..." --canvas <id> --json
|
|
166
|
+
aigma create-node --prompt "..." --canvas <id> --output out.html
|
|
167
|
+
aigma agent-help # print this guide
|
|
168
|
+
```
|
package/README.md
CHANGED
|
@@ -14,9 +14,18 @@ npm install -g aigma
|
|
|
14
14
|
# Sign in via your browser (Google or Apple)
|
|
15
15
|
aigma login
|
|
16
16
|
|
|
17
|
-
#
|
|
17
|
+
# List canvases
|
|
18
|
+
aigma list-canvases
|
|
19
|
+
|
|
20
|
+
# Create a canvas
|
|
21
|
+
aigma create-canvas --name "My Project"
|
|
22
|
+
|
|
23
|
+
# Generate a node from a prompt (lands on most-recently-edited canvas)
|
|
18
24
|
aigma create-node --prompt "Hero section for an AI photo editor"
|
|
19
25
|
|
|
26
|
+
# Or target a specific canvas (by UUID or exact name)
|
|
27
|
+
aigma create-node --prompt "Pricing section" --canvas "My Project"
|
|
28
|
+
|
|
20
29
|
# Save the generated HTML to a file
|
|
21
30
|
aigma create-node --prompt "Pricing section" --output pricing.html
|
|
22
31
|
|
|
@@ -24,6 +33,10 @@ aigma create-node --prompt "Pricing section" --output pricing.html
|
|
|
24
33
|
aigma create-node --prompt "Footer with links" --json
|
|
25
34
|
```
|
|
26
35
|
|
|
36
|
+
## For AI agents
|
|
37
|
+
|
|
38
|
+
If you're an AI agent integrating with `aigma`, run `aigma agent-help` to print the full integration guide (also visible at [AGENTS.md](./AGENTS.md)).
|
|
39
|
+
|
|
27
40
|
Each `create-node` call:
|
|
28
41
|
|
|
29
42
|
1. Generates a self-contained HTML fragment with Gemini.
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { fileURLToPath } from 'node:url';
|
|
3
|
+
import { dirname, join } from 'node:path';
|
|
4
|
+
export async function runAgentHelp() {
|
|
5
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
6
|
+
// dist/commands/agent-help.js → ../../AGENTS.md (npm package root)
|
|
7
|
+
const candidates = [
|
|
8
|
+
join(here, '..', '..', 'AGENTS.md'),
|
|
9
|
+
join(here, '..', '..', '..', 'AGENTS.md'),
|
|
10
|
+
];
|
|
11
|
+
for (const p of candidates) {
|
|
12
|
+
try {
|
|
13
|
+
const md = await readFile(p, 'utf8');
|
|
14
|
+
process.stdout.write(md);
|
|
15
|
+
if (!md.endsWith('\n'))
|
|
16
|
+
process.stdout.write('\n');
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
/* try next */
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
process.stderr.write('AGENTS.md not found in package; reinstall aigma.\n');
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=agent-help.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-help.js","sourceRoot":"","sources":["../../src/commands/agent-help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C,MAAM,CAAC,KAAK,UAAU,YAAY;IAChC,MAAM,IAAI,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACrD,mEAAmE;IACnE,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC;QACnC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC;KAC1C,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,EAAE,GAAG,MAAM,QAAQ,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC;YACrC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YACzB,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC;gBAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACnD,OAAO;QACT,CAAC;QAAC,MAAM,CAAC;YACP,cAAc;QAChB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;IAC3E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { authenticatedClient } from '../lib/session.js';
|
|
2
|
+
import { FUNCTIONS_BASE, SUPABASE_ANON_KEY } from '../lib/config.js';
|
|
3
|
+
import { success, json, error, ExitCode } from '../lib/output.js';
|
|
4
|
+
export async function runCreateCanvas(opts) {
|
|
5
|
+
if (!opts.name?.trim()) {
|
|
6
|
+
error('--name is required');
|
|
7
|
+
process.exit(ExitCode.Validation);
|
|
8
|
+
}
|
|
9
|
+
const auth = await authenticatedClient();
|
|
10
|
+
if (!auth) {
|
|
11
|
+
error('Not authenticated. Run `aigma login` first.');
|
|
12
|
+
process.exit(ExitCode.AuthRequired);
|
|
13
|
+
}
|
|
14
|
+
let res;
|
|
15
|
+
try {
|
|
16
|
+
res = await fetch(`${FUNCTIONS_BASE}/cli-create-canvas`, {
|
|
17
|
+
method: 'POST',
|
|
18
|
+
headers: {
|
|
19
|
+
'Content-Type': 'application/json',
|
|
20
|
+
Authorization: `Bearer ${auth.accessToken}`,
|
|
21
|
+
apikey: SUPABASE_ANON_KEY,
|
|
22
|
+
},
|
|
23
|
+
body: JSON.stringify({ name: opts.name.trim() }),
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
catch (err) {
|
|
27
|
+
error(`Network error: ${err.message}`);
|
|
28
|
+
process.exit(ExitCode.Generic);
|
|
29
|
+
}
|
|
30
|
+
let payload;
|
|
31
|
+
try {
|
|
32
|
+
payload = (await res.json());
|
|
33
|
+
}
|
|
34
|
+
catch {
|
|
35
|
+
error(`Server returned non-JSON (status ${res.status})`);
|
|
36
|
+
process.exit(ExitCode.Generic);
|
|
37
|
+
}
|
|
38
|
+
if (!res.ok || payload.error || !payload.canvas) {
|
|
39
|
+
error(payload.error || `Request failed (status ${res.status})`);
|
|
40
|
+
process.exit(res.status === 401 ? ExitCode.AuthRequired : ExitCode.Generic);
|
|
41
|
+
}
|
|
42
|
+
success(`Created canvas: ${payload.canvas.name}`);
|
|
43
|
+
if (opts.json) {
|
|
44
|
+
json(payload);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
process.stderr.write(` id: ${payload.canvas.id}\n`);
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=create-canvas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"create-canvas.js","sourceRoot":"","sources":["../../src/commands/create-canvas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAelE,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAsC;IAC1E,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;QACvB,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC5B,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IACpC,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,mBAAmB,EAAE,CAAC;IACzC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,GAAa,CAAC;IAClB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,cAAc,oBAAoB,EAAE;YACvD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE;gBAC3C,MAAM,EAAE,iBAAiB;aAC1B;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC;SACjD,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,kBAAmB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,OAA6B,CAAC;IAClC,IAAI,CAAC;QACH,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,CAAC,oCAAoC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QAChD,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,0BAA0B,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC9E,CAAC;IAED,OAAO,CAAC,mBAAmB,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAClD,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,IAAI,CAAC,OAAO,CAAC,CAAC;IAChB,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}
|
|
@@ -22,7 +22,10 @@ export async function runCreateNode(opts) {
|
|
|
22
22
|
Authorization: `Bearer ${auth.accessToken}`,
|
|
23
23
|
apikey: SUPABASE_ANON_KEY,
|
|
24
24
|
},
|
|
25
|
-
body: JSON.stringify({
|
|
25
|
+
body: JSON.stringify({
|
|
26
|
+
prompt: opts.prompt,
|
|
27
|
+
...(opts.canvas ? { canvas: opts.canvas } : {}),
|
|
28
|
+
}),
|
|
26
29
|
});
|
|
27
30
|
}
|
|
28
31
|
catch (err) {
|
|
@@ -49,11 +52,14 @@ export async function runCreateNode(opts) {
|
|
|
49
52
|
await fs.writeFile(opts.output, payload.html, 'utf8');
|
|
50
53
|
success(`HTML written to ${opts.output}`);
|
|
51
54
|
}
|
|
55
|
+
if (payload.canvas) {
|
|
56
|
+
info(` Canvas: ${payload.canvas.name} (${payload.canvas.id})`);
|
|
57
|
+
}
|
|
52
58
|
if (payload.public_url) {
|
|
53
59
|
info(` Public: ${payload.public_url}`);
|
|
54
60
|
}
|
|
55
61
|
if (payload.canvas_url) {
|
|
56
|
-
info(`
|
|
62
|
+
info(` Open: ${payload.canvas_url}`);
|
|
57
63
|
}
|
|
58
64
|
success('Node created');
|
|
59
65
|
if (opts.json) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"create-node.js","sourceRoot":"","sources":["../../src/commands/create-node.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"create-node.js","sourceRoot":"","sources":["../../src/commands/create-node.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import { authenticatedClient } from '../lib/session.js';
|
|
2
|
+
import { FUNCTIONS_BASE, SUPABASE_ANON_KEY } from '../lib/config.js';
|
|
3
|
+
import { info, json, error, ExitCode } from '../lib/output.js';
|
|
4
|
+
export async function runListCanvases(opts) {
|
|
5
|
+
const auth = await authenticatedClient();
|
|
6
|
+
if (!auth) {
|
|
7
|
+
error('Not authenticated. Run `aigma login` first.');
|
|
8
|
+
process.exit(ExitCode.AuthRequired);
|
|
9
|
+
}
|
|
10
|
+
let res;
|
|
11
|
+
try {
|
|
12
|
+
res = await fetch(`${FUNCTIONS_BASE}/cli-list-canvases`, {
|
|
13
|
+
method: 'POST',
|
|
14
|
+
headers: {
|
|
15
|
+
'Content-Type': 'application/json',
|
|
16
|
+
Authorization: `Bearer ${auth.accessToken}`,
|
|
17
|
+
apikey: SUPABASE_ANON_KEY,
|
|
18
|
+
},
|
|
19
|
+
body: '{}',
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
catch (err) {
|
|
23
|
+
error(`Network error: ${err.message}`);
|
|
24
|
+
process.exit(ExitCode.Generic);
|
|
25
|
+
}
|
|
26
|
+
let payload;
|
|
27
|
+
try {
|
|
28
|
+
payload = (await res.json());
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
error(`Server returned non-JSON (status ${res.status})`);
|
|
32
|
+
process.exit(ExitCode.Generic);
|
|
33
|
+
}
|
|
34
|
+
if (!res.ok || payload.error) {
|
|
35
|
+
error(payload.error || `Request failed (status ${res.status})`);
|
|
36
|
+
process.exit(res.status === 401 ? ExitCode.AuthRequired : ExitCode.Generic);
|
|
37
|
+
}
|
|
38
|
+
const canvases = payload.canvases ?? [];
|
|
39
|
+
if (opts.json) {
|
|
40
|
+
json(payload);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
if (canvases.length === 0) {
|
|
44
|
+
info('No canvases yet. Create one with `aigma create-canvas --name "<name>"`.');
|
|
45
|
+
return;
|
|
46
|
+
}
|
|
47
|
+
for (const c of canvases) {
|
|
48
|
+
const frameNames = c.frames.map((f) => f.name).join(', ');
|
|
49
|
+
info(` ${c.id} ${c.name} (${c.node_count} nodes${frameNames ? `: ${frameNames}` : ''})`);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
//# sourceMappingURL=list-canvases.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list-canvases.js","sourceRoot":"","sources":["../../src/commands/list-canvases.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAiB/D,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAwB;IAC5D,MAAM,IAAI,GAAG,MAAM,mBAAmB,EAAE,CAAC;IACzC,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACrD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IACtC,CAAC;IAED,IAAI,GAAa,CAAC;IAClB,IAAI,CAAC;QACH,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,cAAc,oBAAoB,EAAE;YACvD,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACP,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,IAAI,CAAC,WAAW,EAAE;gBAC3C,MAAM,EAAE,iBAAiB;aAC1B;YACD,IAAI,EAAE,IAAI;SACX,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,KAAK,CAAC,kBAAmB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,OAA6B,CAAC;IAClC,IAAI,CAAC;QACH,OAAO,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,KAAK,CAAC,oCAAoC,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QACzD,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IACjC,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,EAAE,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAC7B,KAAK,CAAC,OAAO,CAAC,KAAK,IAAI,0BAA0B,GAAG,CAAC,MAAM,GAAG,CAAC,CAAC;QAChE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAC9E,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,EAAE,CAAC;IAExC,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,IAAI,CAAC,OAAO,CAAC,CAAC;QACd,OAAO;IACT,CAAC;IAED,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC,yEAAyE,CAAC,CAAC;QAChF,OAAO;IACT,CAAC;IAED,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,UAAU,SAAS,UAAU,CAAC,CAAC,CAAC,KAAK,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9F,CAAC;AACH,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -2,6 +2,9 @@
|
|
|
2
2
|
import { Command } from 'commander';
|
|
3
3
|
import { runLogin } from './commands/login.js';
|
|
4
4
|
import { runCreateNode } from './commands/create-node.js';
|
|
5
|
+
import { runListCanvases } from './commands/list-canvases.js';
|
|
6
|
+
import { runCreateCanvas } from './commands/create-canvas.js';
|
|
7
|
+
import { runAgentHelp } from './commands/agent-help.js';
|
|
5
8
|
import { exitWith } from './lib/output.js';
|
|
6
9
|
const program = new Command();
|
|
7
10
|
program
|
|
@@ -20,16 +23,43 @@ program
|
|
|
20
23
|
exitWith(1, err.message);
|
|
21
24
|
}
|
|
22
25
|
});
|
|
26
|
+
program
|
|
27
|
+
.command('list-canvases')
|
|
28
|
+
.description('List your Aigma canvases')
|
|
29
|
+
.option('--json', 'output JSON on stdout')
|
|
30
|
+
.action(async (opts) => {
|
|
31
|
+
try {
|
|
32
|
+
await runListCanvases({ json: !!opts.json });
|
|
33
|
+
}
|
|
34
|
+
catch (err) {
|
|
35
|
+
exitWith(1, err.message);
|
|
36
|
+
}
|
|
37
|
+
});
|
|
38
|
+
program
|
|
39
|
+
.command('create-canvas')
|
|
40
|
+
.description('Create a new empty canvas')
|
|
41
|
+
.requiredOption('-n, --name <name>', 'canvas name')
|
|
42
|
+
.option('--json', 'output JSON on stdout')
|
|
43
|
+
.action(async (opts) => {
|
|
44
|
+
try {
|
|
45
|
+
await runCreateCanvas({ name: opts.name, json: !!opts.json });
|
|
46
|
+
}
|
|
47
|
+
catch (err) {
|
|
48
|
+
exitWith(1, err.message);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
23
51
|
program
|
|
24
52
|
.command('create-node')
|
|
25
53
|
.description('Generate an HTML node from a prompt')
|
|
26
54
|
.requiredOption('-p, --prompt <text>', 'prompt describing the node')
|
|
55
|
+
.option('-c, --canvas <id-or-name>', 'target canvas (UUID or exact name)')
|
|
27
56
|
.option('-o, --output <file>', 'write generated HTML to a file')
|
|
28
57
|
.option('--json', 'output JSON on stdout')
|
|
29
58
|
.action(async (opts) => {
|
|
30
59
|
try {
|
|
31
60
|
await runCreateNode({
|
|
32
61
|
prompt: opts.prompt,
|
|
62
|
+
canvas: opts.canvas,
|
|
33
63
|
output: opts.output,
|
|
34
64
|
json: !!opts.json,
|
|
35
65
|
});
|
|
@@ -38,5 +68,16 @@ program
|
|
|
38
68
|
exitWith(1, err.message);
|
|
39
69
|
}
|
|
40
70
|
});
|
|
71
|
+
program
|
|
72
|
+
.command('agent-help')
|
|
73
|
+
.description('Print the AI-agent integration guide (AGENTS.md)')
|
|
74
|
+
.action(async () => {
|
|
75
|
+
try {
|
|
76
|
+
await runAgentHelp();
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
exitWith(1, err.message);
|
|
80
|
+
}
|
|
81
|
+
});
|
|
41
82
|
program.parseAsync(process.argv).catch((err) => exitWith(1, err.message));
|
|
42
83
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AAC1D,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,sDAAsD,CAAC;KACnE,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;KACzC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,QAAQ,CAAC,CAAC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,qCAAqC,CAAC;KAClD,cAAc,CAAC,qBAAqB,EAAE,4BAA4B,CAAC;KACnE,MAAM,CAAC,qBAAqB,EAAE,gCAAgC,CAAC;KAC/D,MAAM,CAAC,QAAQ,EAAE,uBAAuB,CAAC;KACzC,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,IAAI,CAAC;QACH,MAAM,aAAa,CAAC;YAClB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI;SAClB,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,QAAQ,CAAC,CAAC,EAAG,GAAa,CAAC,OAAO,CAAC,CAAC;IACtC,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "aigma",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"description": "Aigma CLI — generate canvas nodes from your terminal",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"homepage": "https://aigma.co",
|
|
@@ -42,6 +42,7 @@
|
|
|
42
42
|
"node": ">=18.17.0"
|
|
43
43
|
},
|
|
44
44
|
"files": [
|
|
45
|
-
"dist"
|
|
45
|
+
"dist",
|
|
46
|
+
"AGENTS.md"
|
|
46
47
|
]
|
|
47
48
|
}
|