ambitgraph 0.4.0__tar.gz → 0.6.0__tar.gz
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.
- {ambitgraph-0.4.0/ambitgraph.egg-info → ambitgraph-0.6.0}/PKG-INFO +1 -1
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/export.py +62 -1
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/graph.py +494 -84
- ambitgraph-0.6.0/ambit_map/island_layout.py +453 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/islands.py +115 -7
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/langmirror.py +147 -14
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/library.py +5 -4
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/objects.py +78 -27
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/page.py +62 -1
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/registry.py +174 -4
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/serve.py +50 -7
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/theme.py +55 -6
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/unitpage.py +21 -5
- ambitgraph-0.6.0/ambitgraph/__init__.py +39 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/cli.py +15 -12
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/codelib.py +76 -2
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/edges.py +820 -7
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/langs.py +115 -19
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/portal.py +42 -2
- ambitgraph-0.6.0/ambitgraph/prompts.py +88 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/shell.py +240 -44
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/symbols.py +2035 -25
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/tables.py +6 -3
- ambitgraph-0.6.0/ambitgraph/urcode.py +111 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0/ambitgraph.egg-info}/PKG-INFO +1 -1
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph.egg-info/SOURCES.txt +1 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/pyproject.toml +1 -1
- ambitgraph-0.4.0/ambit_map/island_layout.py +0 -289
- ambitgraph-0.4.0/ambitgraph/__init__.py +0 -6
- ambitgraph-0.4.0/ambitgraph/urcode.py +0 -78
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/LICENSE +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/MANIFEST.in +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/README.md +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/__init__.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/__main__.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/ambit-map-enrich.md +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/ambit-mapllm-contract.md +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/cli.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/daemon.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/dialects/__init__.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/dialects/contract.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/dialects/express_pack.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/dialects/fastapi_pack.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/dialects/flask_pack.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/dialects/nextjs_pack.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/dialects/supabase_pack.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/families.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/judged.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/kitdemo.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/load.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/mapllm.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/matched.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/model.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/orchestrate.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambit_map/paths.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/WALKTHROUGH.md +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/__main__.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/cockpit.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/config.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/console.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/demo.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/docs_discovery.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/doctor.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/duplication.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/emit.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/engine_identity.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/estimate.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/eval.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/feeds.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/gate.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/gate_check.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/gate_server.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/harvest.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/inventory.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/jscalls.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/mds.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/merge.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/merge_jsp.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/parameterize.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/pipeline.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/pycalls.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/ratify.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/report.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/reports.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/sample.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/secretary.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/stages.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph/tasks.py +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph.egg-info/dependency_links.txt +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph.egg-info/entry_points.txt +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph.egg-info/requires.txt +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/ambitgraph.egg-info/top_level.txt +0 -0
- {ambitgraph-0.4.0 → ambitgraph-0.6.0}/setup.cfg +0 -0
|
@@ -23,6 +23,10 @@ GRAPH_EXPORT_CAP = 200 # the brief's cap
|
|
|
23
23
|
EXPORT_INDEX = "index.html"
|
|
24
24
|
EXPORT_MAP = reg.EXPORT_MAP_REL
|
|
25
25
|
EXPORT_LIBRARY = "library.html"
|
|
26
|
+
# The Whole map tab. NOT map.html -- that is the default GRAPH seed page
|
|
27
|
+
# and every existing link plus the manifest resolve to it; renaming it to
|
|
28
|
+
# free the nicer name would break links to fix an aesthetic.
|
|
29
|
+
EXPORT_OVERVIEW = reg.EXPORT_OVERVIEW_REL
|
|
26
30
|
MANIFEST_NAME = "ambitgraph-map.export.json" # U4 review fix (blocker): the
|
|
27
31
|
# scoped-prune manifest -- lists every relative path THIS export wrote, so
|
|
28
32
|
# the NEXT export deletes only what it itself owns, never a hand-placed file.
|
|
@@ -38,6 +42,18 @@ ENRICH_DOC_NAME = "ambit-map-enrich.md"
|
|
|
38
42
|
# generalisation of ambit-map-enrich.md's own producer-portability clause.
|
|
39
43
|
CONTRACT_DOC_NAME = "ambit-mapllm-contract.md"
|
|
40
44
|
|
|
45
|
+
# 2026-09-05 (embed-fragment ruling): a
|
|
46
|
+
# SECOND artifact for the Graph screen, alongside map.html -- canvas and
|
|
47
|
+
# its own interaction only, for a host (Omniscient's UrCode tab) that
|
|
48
|
+
# integrates it as native DOM instead of serving map.html's full page
|
|
49
|
+
# inside an iframe. `embed/<kind>.html` is IDP's own proposed naming,
|
|
50
|
+
# accepted in the ruling. One default-seed fragment for v1 (IDP's own
|
|
51
|
+
# call, 2026-09-05: the dashboard shows THE map, a sha-gated regenerate
|
|
52
|
+
# keeps one fragment cheap and current, and per-seed fragments would
|
|
53
|
+
# multiply for clicks that may never come) -- not every graph_keys() seed
|
|
54
|
+
# page.py:page_rows() also pre-renders.
|
|
55
|
+
EMBED_GRAPH_REL = "embed/graph.html"
|
|
56
|
+
|
|
41
57
|
Row = collections.namedtuple("Row", "rel route_path raw_query depth")
|
|
42
58
|
|
|
43
59
|
_SLUG_HTML_RE = re.compile(r".+-[0-9a-f]{6}\.html$")
|
|
@@ -139,6 +155,8 @@ def page_rows(model, dialects):
|
|
|
139
155
|
# existing link and the manifest resolve to it. A real row now, not a copy.
|
|
140
156
|
rows.append(Row(EXPORT_MAP, "/graph", index_query, 0))
|
|
141
157
|
|
|
158
|
+
rows.append(Row(EXPORT_OVERVIEW, "/overview", "", 0))
|
|
159
|
+
|
|
142
160
|
routes_by_uid = lib._routes_by_uid(dialects)
|
|
143
161
|
units_iter = model.units.values() if hasattr(model, "units") else ()
|
|
144
162
|
order = fam.families_in_use(units_iter, routes_by_uid)
|
|
@@ -292,6 +310,43 @@ def write_export(state, out_dir, route, render, now_iso):
|
|
|
292
310
|
if row.rel == EXPORT_INDEX:
|
|
293
311
|
index_text = html
|
|
294
312
|
|
|
313
|
+
# 2026-09-05 (embed-fragment ruling): the default-seed graph fragment,
|
|
314
|
+
# written OUTSIDE the row loop above because it is not a `route()`-
|
|
315
|
+
# addressable page -- no reader ever navigates to embed/graph.html
|
|
316
|
+
# directly, an embedder's own build step reads it. seed_id=None reuses
|
|
317
|
+
# render_graph's own always-seeded resolution (the same fallback
|
|
318
|
+
# map.html's own row already relies on via page_rows' index_query), so
|
|
319
|
+
# this can never silently pick a different seed than map.html draws.
|
|
320
|
+
# "" (no real canvas -- a damaged model, or the map_repo's own
|
|
321
|
+
# zero-unit branch) means no file at all, never an empty one an
|
|
322
|
+
# embedder would have to special-case; its own absence is the signal.
|
|
323
|
+
embed_frag = gph.render_graph_embed_fragment(model, dialects=dialects)
|
|
324
|
+
embed_rel = None
|
|
325
|
+
if embed_frag:
|
|
326
|
+
# render_graph_embed_fragment builds its hrefs the SAME way
|
|
327
|
+
# render_graph does (registry.href_seed_unit/href_table, absolute
|
|
328
|
+
# /unit?u=.../table?t=... paths meant for a SERVED map) -- every
|
|
329
|
+
# other exported page gets those rewritten to real static
|
|
330
|
+
# sibling-file paths by objects.document()'s own static_rewrite
|
|
331
|
+
# call, which this fragment never passes through (it skips
|
|
332
|
+
# document() by design, no hero/nav to assemble). Without this,
|
|
333
|
+
# a node click in an embedder's integrated canvas would 404
|
|
334
|
+
# against a route that only exists in served mode -- exactly the
|
|
335
|
+
# "navigate to the export's per-seed page" IDP's own build
|
|
336
|
+
# depends on. depth=1 matches embed/graph.html's own real
|
|
337
|
+
# location, same as graph/<slug>.html's row above.
|
|
338
|
+
embed_ctx = reg.StaticCtx(EMBED_GRAPH_REL.count("/"), graph_slugs, "")
|
|
339
|
+
embed_frag = reg.static_rewrite(embed_frag, embed_ctx)
|
|
340
|
+
# A4: resolve `N noun(s)` markers here too -- objects.document()
|
|
341
|
+
# does this for every real page (customer voice is not a property
|
|
342
|
+
# of how a page was served), but this fragment never passes
|
|
343
|
+
# through document() at all, so nothing else ever will.
|
|
344
|
+
embed_frag = reg.inflect_counts(embed_frag)
|
|
345
|
+
embed_p = out_dir / EMBED_GRAPH_REL
|
|
346
|
+
embed_p.parent.mkdir(parents=True, exist_ok=True)
|
|
347
|
+
embed_p.write_text(embed_frag, encoding="utf-8", newline="\n")
|
|
348
|
+
embed_rel = EMBED_GRAPH_REL
|
|
349
|
+
|
|
295
350
|
# W6 D-8/D-10 (THE PACKAGING ITEM): drop ambit-map-enrich.md beside the
|
|
296
351
|
# export so it is ALWAYS present -- even for a wheel-only install where
|
|
297
352
|
# a repo checkout's own top-level copy is absent -- the SAME copy-beside
|
|
@@ -317,5 +372,11 @@ def write_export(state, out_dir, route, render, now_iso):
|
|
|
317
372
|
# again would name it twice in the manifest. C3: the contract doc joins
|
|
318
373
|
# ENRICH_DOC_NAME here for the identical reason -- an un-manifested copy
|
|
319
374
|
# would be a stray file the NEXT export cannot recognise as its own.
|
|
320
|
-
|
|
375
|
+
# embed_rel is None (never named) exactly when no file was written --
|
|
376
|
+
# naming an absent path here would make the NEXT export's prune try to
|
|
377
|
+
# unlink a file that was never there.
|
|
378
|
+
extra = [ENRICH_DOC_NAME, CONTRACT_DOC_NAME]
|
|
379
|
+
if embed_rel is not None:
|
|
380
|
+
extra.append(embed_rel)
|
|
381
|
+
_write_manifest(out_dir, [row.rel for row in rows] + extra)
|
|
321
382
|
return index_text
|