@yottagraph-app/aether-instructions 1.1.0 → 1.1.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 +3 -0
- package/commands/configure_query_server.md +1 -1
- package/commands/update_instructions.md +8 -0
- package/commands/vercel_setup.md +4 -4
- package/package.json +24 -24
- package/rules/agents.mdc +12 -1
- package/rules/api.mdc +2 -2
- package/rules/instructions_warning.mdc +16 -23
package/README.md
CHANGED
|
@@ -16,6 +16,7 @@ To update to the latest version:
|
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
This Cursor command will:
|
|
19
|
+
|
|
19
20
|
1. Download the latest version of this package
|
|
20
21
|
2. Replace files in `.cursor/` that are listed in `.cursor/.aether-instructions-manifest`
|
|
21
22
|
3. Extract fresh files from the package
|
|
@@ -32,6 +33,7 @@ by the updater.
|
|
|
32
33
|
### Customizing Rules/Commands
|
|
33
34
|
|
|
34
35
|
To customize something that ships with the package:
|
|
36
|
+
|
|
35
37
|
1. Copy it to a new filename (a path not listed in the manifest)
|
|
36
38
|
2. Make your changes to the copy
|
|
37
39
|
3. Your copy won't be replaced when you run `/update_instructions`
|
|
@@ -44,6 +46,7 @@ This package is built from `aether-dev` sources. To publish:
|
|
|
44
46
|
2. Run `/publish_instructions --bump patch --publish`
|
|
45
47
|
|
|
46
48
|
The publish command:
|
|
49
|
+
|
|
47
50
|
- Copies source files to `packages/aether-instructions/` with their original names
|
|
48
51
|
- Bumps the version
|
|
49
52
|
- Publishes to npmjs
|
|
@@ -7,6 +7,7 @@ Update Cursor rules, commands, and skills from the `@yottagraph-app/aether-instr
|
|
|
7
7
|
This command downloads the latest instructions package and extracts it to your `.cursor/` directory. A manifest file (`.cursor/.aether-instructions-manifest`) tracks which files came from the package so updates only replace package-provided files.
|
|
8
8
|
|
|
9
9
|
**What happens:**
|
|
10
|
+
|
|
10
11
|
1. Downloads the latest `@yottagraph-app/aether-instructions` package
|
|
11
12
|
2. Deletes files listed in the existing manifest
|
|
12
13
|
3. Cleans up any legacy `aether_*` prefixed files from older versions
|
|
@@ -27,6 +28,7 @@ cat .cursor/.aether-instructions-version 2>/dev/null || echo "Not installed"
|
|
|
27
28
|
```
|
|
28
29
|
|
|
29
30
|
Report to user:
|
|
31
|
+
|
|
30
32
|
> Current version: X.Y.Z (or "Not installed")
|
|
31
33
|
|
|
32
34
|
---
|
|
@@ -40,6 +42,7 @@ npm view @yottagraph-app/aether-instructions version
|
|
|
40
42
|
```
|
|
41
43
|
|
|
42
44
|
Compare with current:
|
|
45
|
+
|
|
43
46
|
- If same version: Ask user if they want to reinstall anyway
|
|
44
47
|
- If newer version: Proceed with update
|
|
45
48
|
- If current is newer: Warn user (they may have a pre-release)
|
|
@@ -147,7 +150,9 @@ ls -d .cursor/skills/*/ 2>/dev/null | wc -l
|
|
|
147
150
|
```
|
|
148
151
|
|
|
149
152
|
Report to user:
|
|
153
|
+
|
|
150
154
|
> Updated to @yottagraph-app/aether-instructions@X.Y.Z
|
|
155
|
+
>
|
|
151
156
|
> - Rules: N files
|
|
152
157
|
> - Commands: N files
|
|
153
158
|
> - Skills: N directories
|
|
@@ -172,16 +177,19 @@ git commit -m "Update instructions to vX.Y.Z"
|
|
|
172
177
|
### npm pack fails
|
|
173
178
|
|
|
174
179
|
If `npm pack` fails with a registry error:
|
|
180
|
+
|
|
175
181
|
> Make sure you have network access to npmjs.com. If you're behind a proxy, configure npm: `npm config set proxy <url>`
|
|
176
182
|
|
|
177
183
|
### Permission denied
|
|
178
184
|
|
|
179
185
|
If you get permission errors:
|
|
186
|
+
|
|
180
187
|
> Try running with appropriate permissions, or check that `.cursor/` is writable.
|
|
181
188
|
|
|
182
189
|
### Want to customize a rule or command?
|
|
183
190
|
|
|
184
191
|
If you need to modify a package-provided file:
|
|
192
|
+
|
|
185
193
|
1. Edit it directly — your changes will persist until the next update
|
|
186
194
|
2. To preserve changes across updates, copy it to a new name first
|
|
187
195
|
3. Remove the original's entry from `.cursor/.aether-instructions-manifest` so it won't be deleted on update
|
package/commands/vercel_setup.md
CHANGED
|
@@ -307,10 +307,10 @@ Read the local `.env` file and parse all non-commented, non-empty lines into KEY
|
|
|
307
307
|
|
|
308
308
|
- Commented-out lines (starting with `#`)
|
|
309
309
|
- Variables with empty values (e.g., `NUXT_PUBLIC_USER_NAME=`, `NUXT_PUBLIC_QUERY_SERVER_ADDRESS=`)
|
|
310
|
-
> **Why skip empty values?** Nuxt's runtime config defaults them to empty strings already.
|
|
311
|
-
> The Vercel CLI cannot store truly empty values — it either prompts interactively or
|
|
312
|
-
> requires a non-empty string. Using a space or placeholder causes bugs. For example,
|
|
313
|
-
> a space in `NUXT_PUBLIC_USER_NAME` bypasses Auth0 login entirely.
|
|
310
|
+
> **Why skip empty values?** Nuxt's runtime config defaults them to empty strings already.
|
|
311
|
+
> The Vercel CLI cannot store truly empty values — it either prompts interactively or
|
|
312
|
+
> requires a non-empty string. Using a space or placeholder causes bugs. For example,
|
|
313
|
+
> a space in `NUXT_PUBLIC_USER_NAME` bypasses Auth0 login entirely.
|
|
314
314
|
|
|
315
315
|
### Sync Process
|
|
316
316
|
|
package/package.json
CHANGED
|
@@ -1,26 +1,26 @@
|
|
|
1
1
|
{
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
2
|
+
"name": "@yottagraph-app/aether-instructions",
|
|
3
|
+
"version": "1.1.1",
|
|
4
|
+
"description": "Cursor rules, commands, and skills for Aether development",
|
|
5
|
+
"files": [
|
|
6
|
+
"rules",
|
|
7
|
+
"commands",
|
|
8
|
+
"skills"
|
|
9
|
+
],
|
|
10
|
+
"repository": {
|
|
11
|
+
"type": "git",
|
|
12
|
+
"url": "https://github.com/Lovelace-AI/aether-dev.git",
|
|
13
|
+
"directory": "packages/aether-instructions"
|
|
14
|
+
},
|
|
15
|
+
"keywords": [
|
|
16
|
+
"cursor",
|
|
17
|
+
"aether",
|
|
18
|
+
"rules",
|
|
19
|
+
"commands",
|
|
20
|
+
"skills"
|
|
21
|
+
],
|
|
22
|
+
"license": "UNLICENSED",
|
|
23
|
+
"publishConfig": {
|
|
24
|
+
"access": "public"
|
|
25
|
+
}
|
|
26
26
|
}
|
package/rules/agents.mdc
CHANGED
|
@@ -58,7 +58,10 @@ directory at deploy time. It handles:
|
|
|
58
58
|
- Falling back to `ELEMENTAL_API_TOKEN` for local dev
|
|
59
59
|
|
|
60
60
|
```python
|
|
61
|
-
|
|
61
|
+
try:
|
|
62
|
+
from broadchurch_auth import elemental_client
|
|
63
|
+
except ImportError:
|
|
64
|
+
from .broadchurch_auth import elemental_client
|
|
62
65
|
|
|
63
66
|
def get_schema() -> dict:
|
|
64
67
|
"""Get the yottagraph schema."""
|
|
@@ -73,6 +76,10 @@ def find_entities(expression: str, limit: int = 10) -> dict:
|
|
|
73
76
|
return resp.json()
|
|
74
77
|
```
|
|
75
78
|
|
|
79
|
+
The try/except is required because the import path differs between local
|
|
80
|
+
dev (`agents/` on sys.path → absolute import) and Agent Engine runtime
|
|
81
|
+
(code packaged inside an ADK module → relative import).
|
|
82
|
+
|
|
76
83
|
**Do NOT** hardcode URLs or manually handle auth tokens. Do NOT read
|
|
77
84
|
`broadchurch.yaml` directly — `broadchurch_auth` handles all of this.
|
|
78
85
|
|
|
@@ -116,6 +123,10 @@ Select your agent from the dropdown in the web UI. You can also run a single age
|
|
|
116
123
|
during local dev (agents/ is the CWD → on sys.path). At deploy time, the
|
|
117
124
|
workflow copies it into the agent directory alongside `broadchurch.yaml`.
|
|
118
125
|
|
|
126
|
+
**Important:** Always use the try/except import pattern shown above. ADK
|
|
127
|
+
wraps agent code in a package at deploy time, so absolute imports fail at
|
|
128
|
+
runtime in Agent Engine — the relative import fallback is required.
|
|
129
|
+
|
|
119
130
|
## Deployment
|
|
120
131
|
|
|
121
132
|
Two ways to deploy:
|
package/rules/api.mdc
CHANGED
|
@@ -135,8 +135,8 @@ See the **cookbook** rule for a full "Get filings for a company" recipe.
|
|
|
135
135
|
|
|
136
136
|
- **`client.getNEID()`** -- simple single-entity lookup by name
|
|
137
137
|
(`GET /entities/lookup`). Best for resolving one company/person name.
|
|
138
|
-
- **`client.findEntities()`** -- expression-based
|
|
139
|
-
(`POST /
|
|
138
|
+
- **`client.findEntities()`** -- expression-based search
|
|
139
|
+
(`POST /elemental/find`). Best for filtered searches (by type, property,
|
|
140
140
|
relationship). See `find.md` for the expression language.
|
|
141
141
|
|
|
142
142
|
## Error Handling
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
description: Warns users not to modify
|
|
3
|
-
globs:
|
|
4
|
-
- .cursor/**/aether_*
|
|
2
|
+
description: Warns users not to modify package-managed instruction files in .cursor/
|
|
5
3
|
alwaysApply: false
|
|
6
4
|
---
|
|
7
5
|
|
|
@@ -9,40 +7,35 @@ alwaysApply: false
|
|
|
9
7
|
|
|
10
8
|
**You are editing a file managed by the `@yottagraph-app/aether-instructions` package.**
|
|
11
9
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
`/aether_update_instructions`.
|
|
10
|
+
Package-managed files are tracked by `.cursor/.aether-instructions-manifest`.
|
|
11
|
+
They will be **overwritten** when you run `/update_instructions`.
|
|
15
12
|
|
|
16
13
|
## Do Not
|
|
17
14
|
|
|
18
|
-
- Modify
|
|
19
|
-
- Create new files with the `aether_` prefix (they will be deleted on update)
|
|
15
|
+
- Modify files listed in the manifest directly (changes will be lost on update)
|
|
20
16
|
|
|
21
17
|
## To Customize
|
|
22
18
|
|
|
23
|
-
If you need to modify
|
|
19
|
+
If you need to modify a package-provided rule or command:
|
|
24
20
|
|
|
25
|
-
1. **Copy** the file to a new name
|
|
21
|
+
1. **Copy** the file to a new name
|
|
26
22
|
2. Make your changes to the copy
|
|
27
|
-
3.
|
|
23
|
+
3. Remove the original's entry from `.cursor/.aether-instructions-manifest`
|
|
24
|
+
so it won't be replaced on update
|
|
28
25
|
|
|
29
26
|
Example:
|
|
30
27
|
|
|
31
28
|
```bash
|
|
32
29
|
# Copy the rule you want to customize
|
|
33
|
-
cp .cursor/rules/
|
|
30
|
+
cp .cursor/rules/api.mdc .cursor/rules/api_custom.mdc
|
|
34
31
|
|
|
35
|
-
# Edit your copy
|
|
36
|
-
# Your customizations in api_custom.mdc are preserved across updates
|
|
32
|
+
# Edit your copy — it won't be affected by instruction updates
|
|
37
33
|
```
|
|
38
34
|
|
|
39
|
-
##
|
|
35
|
+
## How It Works
|
|
40
36
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
- Receive rule updates without losing your customizations
|
|
47
|
-
- Know at a glance which files are yours vs. package-provided
|
|
48
|
-
- Safely extend the system without conflicts
|
|
37
|
+
- `.cursor/.aether-instructions-manifest` lists every file installed by the
|
|
38
|
+
package (one relative path per line, e.g. `rules/api.mdc`)
|
|
39
|
+
- `/update_instructions` deletes manifest entries, extracts fresh files from
|
|
40
|
+
the latest package, and writes a new manifest
|
|
41
|
+
- Files not in the manifest are never touched
|