@yottagraph-app/aether-instructions 1.1.32 → 1.1.33

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@yottagraph-app/aether-instructions",
3
- "version": "1.1.32",
3
+ "version": "1.1.33",
4
4
  "description": "Cursor rules, commands, and skills for Aether development",
5
5
  "files": [
6
6
  "rules",
package/rules/aether.mdc CHANGED
@@ -8,13 +8,13 @@ alwaysApply: true
8
8
 
9
9
  **Structure:** `pages/` (file-based routing), `components/`, `composables/`, `server/api/`, `agents/` (Python ADK), `mcp-servers/` (Python FastMCP).
10
10
 
11
- **Data:** This app runs on the Lovelace platform -- entities, news, filings, sentiment, relationships, events. See the `data` rule for access patterns and gotchas. Skill docs: `skills/data-model/` (entity types, properties, relationships; `SKILL.md` first). Do NOT call external APIs for data the platform provides.
11
+ **Data:** This app runs on the Lovelace platform -- entities, news, filings, sentiment, relationships, events. See the `data` rule for access patterns and gotchas. Skill docs: `skills/data-model/` (entity types, properties, relationships; `SKILL.md` first), `skills/elemental-mcp-patterns/` (MCP response shapes, property type handling, Python patterns for agent tools). Do NOT call external APIs for data the platform provides.
12
12
 
13
13
  **Storage:** KV (Upstash Redis) for preferences and lightweight state via `Pref<T>` from `usePrefsStore()`. Neon Postgres for relational data if connected (check `.env` for `DATABASE_URL`).
14
14
 
15
15
  **Source of truth:** `DESIGN.md` -- read before starting work, update when changing features. The starter UI is placeholder -- replace freely. Feature docs in `design/` for implementation planning.
16
16
 
17
- **Git:** Commit meaningful units of work. Run `npm run format` before commit. Message format: `[Agent commit] {summary}`.
17
+ **Git:** Commit meaningful units of work. Run `npm run format` before commit. Message format: `[Agent commit] {summary}`. Push directly to main — do NOT create PRs or feature branches.
18
18
 
19
19
  **First action for a new project:** Run `/build_my_app`.
20
20
 
@@ -71,18 +71,45 @@ In production, all Elemental API calls go through the Portal Gateway at
71
71
  `broadchurch.yaml`) and the portal injects its own Auth0 M2M token
72
72
  upstream.
73
73
 
74
- ## Reliability invariants (REST-backed agents)
74
+ ## MCP-based agents
75
75
 
76
- These constraints reduce failure modes when building graph-aware agents on
77
- the Query Server API:
76
+ When the project uses **MCP-only data architecture**, agents access the
77
+ knowledge graph through Elemental MCP tools instead of REST. The MCP tools
78
+ (`elemental_get_entity`, `elemental_get_related`, `elemental_get_events`,
79
+ etc.) handle entity resolution, NEID formatting, and schema lookups
80
+ automatically. Use the `data-model` skill docs for entity types,
81
+ properties, and relationship schemas.
82
+
83
+ Wire MCP into ADK agents by declaring an `McpToolset` that points to the
84
+ Elemental MCP server. The MCP server URL and auth are configured in the
85
+ agent's runtime environment (typically via `broadchurch.yaml` gateway
86
+ proxy). See the Aether `agents` rule for ADK agent structure.
87
+
88
+ **Read the `elemental-mcp-patterns` skill** (`skills/elemental-mcp-patterns/`)
89
+ before writing tool code. It covers MCP response shapes, property type
90
+ handling (the `data_nindex` problem), and copy-paste Python patterns for
91
+ entity resolution, property formatting, events, and relationships.
92
+
93
+ ## Reliability invariants
94
+
95
+ These constraints reduce failure modes when building graph-aware agents,
96
+ whether using REST or MCP:
78
97
 
79
98
  - **Resolve entities first.** For named-entity questions, do explicit entity
80
99
  resolution before deeper property/relationship/event retrieval.
81
100
  - **Prefer domain endpoints over heuristic matching.** Use dedicated event or
82
- relationship APIs instead of inferring semantics from property/PID names.
101
+ relationship APIs (`elemental_get_events`, event endpoints) instead of
102
+ inferring semantics from property/PID names. Substring-matching PID names
103
+ for words like "event" or "filing" returns wrong results — PIDs like
104
+ "filed" are document relationship IDs, not event timestamps.
83
105
  - **Keep IDs internal to tool calls.** Use NEIDs/EIDs internally for precise
84
- requests, and render human-readable names in user-facing output.
85
- - **Dereference linked values before display.** Reference-like property
86
- values should be resolved into entity names when shown to users.
106
+ requests, and render human-readable names in user-facing output. Never
107
+ show raw NEIDs to users.
108
+ - **Handle reference-typed properties (`data_nindex`).** Some property
109
+ values are entity references (NEIDs), not display text. Use
110
+ `elemental_get_schema` or the data-model skill to check a property's
111
+ type. For `data_nindex` properties (e.g. "country" on an organization),
112
+ resolve the NEID to a display name before rendering. A helper like
113
+ `_pid_types()` that maps PIDs to their schema type is very useful.
87
114
  - **Treat 404 as not-found data by default.** Validate server health
88
115
  separately before classifying these as connectivity failures.
@@ -43,6 +43,19 @@ Do **not** run Prettier directly — always use `npm run format`. After formatti
43
43
 
44
44
  If a user asks about this error, explain the `npm run format` requirement.
45
45
 
46
- ## Post-Feature: Encourage Push
46
+ ## Pushing
47
47
 
48
- After a feature is fully implemented and committed, use `AskQuestion` to encourage the user to push their branch.
48
+ **Push directly to main.** Vercel auto-deploys on push to main, so this
49
+ gets the app live immediately.
50
+
51
+ **Do NOT create pull requests** — do not run `gh pr create` or create
52
+ feature branches. In Cursor Cloud environments, the GitHub integration
53
+ token lacks PR permissions (known Cursor issue). Pushing to main is the
54
+ correct workflow.
55
+
56
+ ```bash
57
+ git push origin main
58
+ ```
59
+
60
+ If running locally (not in Cursor Cloud), the user may prefer a PR-based
61
+ workflow — ask before pushing directly to main in that case.
@@ -14,7 +14,7 @@ In **mcp-only** mode, **Elemental MCP** is the primary way agents reach the know
14
14
 
15
15
  **B. Investigation / research / aggregation** — Agent uses MCP tools **during multi-step reasoning**: compare entities, trace relationships, pull events or filings, summarize. Typical outputs: a **final answer**, a **report artifact**, or **partial writes** to a store; a full graph replica is optional. Postgres is optional.
16
16
 
17
- **C. Channel / concierge** — Agent is the **users interface** to the graph: user message → agent selects and invokes MCP tools → **natural-language reply** (with optional structured blocks). Often pairs with **`useAgentChat`** in Nuxt; **no local DB** required for the graph if answers are computed on the fly.
17
+ **C. Channel / concierge** — Agent is the **user's interface** to the graph: user message → agent selects and invokes MCP tools → **natural-language reply** (with optional structured blocks). Often pairs with **`useAgentChat`** in Nuxt; **no local DB** required for the graph if answers are computed on the fly.
18
18
 
19
19
  You can deploy **multiple agents** with different mixes of A–C.
20
20
 
@@ -32,7 +32,9 @@ export DATABASE_URL="postgresql://..."
32
32
 
33
33
  ## Tool surface
34
34
 
35
- MCP tools handle schema, entity resolution, related entities, events, sentiment, etc. Use them for **discovery** in research agents and for **batch extraction** in sync agents. Match tool choice to the pattern (A/B/C) in each agents `instruction`.
35
+ MCP tools handle schema, entity resolution, related entities, events, sentiment, etc. Use them for **discovery** in research agents and for **batch extraction** in sync agents. Match tool choice to the pattern (A/B/C) in each agent's `instruction`.
36
+
37
+ **Read the `elemental-mcp-patterns` skill** (`skills/elemental-mcp-patterns/SKILL.md`) before writing tool code. It covers MCP response shapes, property type handling (the `data_nindex` problem), and copy-paste Python patterns for entity resolution, property formatting, events, and relationships.
36
38
 
37
39
  ## Reliability invariants (MCP agents)
38
40