n-seo 0.3.0 → 0.3.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/ingest/__pycache__/analyze_metadata.cpython-312.pyc +0 -0
- package/ingest/__pycache__/google_auth.cpython-312.pyc +0 -0
- package/ingest/__pycache__/http_util.cpython-312.pyc +0 -0
- package/ingest/__pycache__/seo_config.cpython-312.pyc +0 -0
- package/ops/__pycache__/daily.cpython-312.pyc +0 -0
- package/ops/__pycache__/daily_diff.cpython-312.pyc +0 -0
- package/ops/__pycache__/demo_data.cpython-312.pyc +0 -0
- package/ops/__pycache__/export_static.cpython-312.pyc +0 -0
- package/ops/__pycache__/llm.cpython-312.pyc +0 -0
- package/ops/__pycache__/publish.cpython-312.pyc +0 -0
- package/ops/doctor.py +29 -2
- package/package.json +1 -1
- package/probes/__pycache__/site_probe.cpython-312.pyc +0 -0
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/ops/doctor.py
CHANGED
|
@@ -78,8 +78,35 @@ def check_tools():
|
|
|
78
78
|
report("OK" if v >= (3, 10) else "FAIL",
|
|
79
79
|
f"python {v.major}.{v.minor} ({Path(sys.executable).name})",
|
|
80
80
|
"" if v >= (3, 10) else "3.10+ required")
|
|
81
|
-
|
|
82
|
-
|
|
81
|
+
# Ask node whether the engine can actually resolve its dependencies,
|
|
82
|
+
# rather than looking for a node_modules directory inside the engine.
|
|
83
|
+
# npm hoists dependencies to the *consumer's* node_modules, so a perfectly
|
|
84
|
+
# healthy `npm i n-seo` has none of its own — and the old check told those
|
|
85
|
+
# users to run `npm install`, which would not have helped. This is the
|
|
86
|
+
# same resolution the CLI uses to find tsx before it spawns the dashboard.
|
|
87
|
+
# tsx is resolved through its package.json because that is the exact
|
|
88
|
+
# lookup the CLI does before spawning the dashboard. hono and its server
|
|
89
|
+
# are resolved as bare specifiers: their `exports` maps deliberately do
|
|
90
|
+
# not expose ./package.json, so asking for it throws on a healthy install.
|
|
91
|
+
probe = (
|
|
92
|
+
"const {createRequire}=require('node:module');"
|
|
93
|
+
"const r=createRequire(process.argv[1]+'/');"
|
|
94
|
+
"r.resolve('tsx/package.json');"
|
|
95
|
+
"for (const d of ['hono','@hono/node-server']) r.resolve(d);"
|
|
96
|
+
)
|
|
97
|
+
try:
|
|
98
|
+
subprocess.run([node, "-e", probe, str(seo_config.ROOT)],
|
|
99
|
+
check=True, capture_output=True, timeout=30)
|
|
100
|
+
report("OK", "engine dependencies")
|
|
101
|
+
except FileNotFoundError:
|
|
102
|
+
report("WARN", "engine dependencies", "skipped — node not found")
|
|
103
|
+
except subprocess.TimeoutExpired:
|
|
104
|
+
report("WARN", "engine dependencies", "node timed out resolving them")
|
|
105
|
+
except subprocess.CalledProcessError:
|
|
106
|
+
hint = ("run: npm install" if (seo_config.ROOT / "package.json").exists()
|
|
107
|
+
and not (seo_config.ROOT / "node_modules").exists()
|
|
108
|
+
else "reinstall the engine: npm install n-seo")
|
|
109
|
+
report("FAIL", "engine dependencies", f"tsx/hono not resolvable — {hint}")
|
|
83
110
|
|
|
84
111
|
|
|
85
112
|
def check_auth(cfg):
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "n-seo",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Agentic, local-first SEO / AEO / GEO control plane: pulls Search Console + GA4, probes your sites, and ranks the next moves. Your LLM writes the proposals; your coding agent works the queue over MCP.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "En Dash Consulting (https://endash.us)",
|
|
Binary file
|