awkno 0.2.7__tar.gz → 0.2.8__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.
- {awkno-0.2.7 → awkno-0.2.8}/PKG-INFO +1 -1
- {awkno-0.2.7 → awkno-0.2.8}/awkno/__init__.py +1 -1
- {awkno-0.2.7 → awkno-0.2.8}/awkno/generate.py +13 -2
- awkno-0.2.8/awkno/pages/aitherbrowser.json +12 -0
- awkno-0.2.8/awkno/pages/awcap.json +16 -0
- awkno-0.2.8/awkno/pages/awconnect.json +12 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awdesk.json +4 -2
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awdk.json +1 -1
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awprism.json +1 -1
- awkno-0.2.8/awkno/pages/aws.json +20 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awstorage.json +3 -1
- awkno-0.2.8/awkno/pages/salescompel.json +12 -0
- awkno-0.2.8/awkno/pages/zeroauthy.json +12 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno.egg-info/PKG-INFO +1 -1
- {awkno-0.2.7 → awkno-0.2.8}/awkno.egg-info/SOURCES.txt +6 -0
- {awkno-0.2.7 → awkno-0.2.8}/pyproject.toml +1 -1
- {awkno-0.2.7 → awkno-0.2.8}/tests/test_awkno.py +37 -0
- {awkno-0.2.7 → awkno-0.2.8}/LICENSE +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/README.md +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/_doctor.py +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/cli.py +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/corpus.py +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/agent-senses.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/agent-vm.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/agentic-orchestrator.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/aitherconnect.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/aitherkvcache.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/aitheros.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/aitherzero.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/avatar-ensemble.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awask.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awasp.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awavatar.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awbac.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awbeads.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awbonsai.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awbrain.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awbrowse.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awcache.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awcams.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awclassify.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awdaemons.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awdata.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awdecide.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awdeck.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awdelphi.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awdiscord.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awdit.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awembed.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awevolve.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awfind.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awflow.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awfocus.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awforge.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awgit.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awgraph.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awgym.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awiam.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awiris.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awkit.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awkno.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awknowledge.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awlab.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awlog.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awm.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awmail.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awmine.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awmod.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awnboard.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awnest.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awnet.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awnix.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awnode.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awpack.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awpermit.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awplay.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awpool.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awpredict.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awprove.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awreason.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awrecover.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awrecurse.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awrelay.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awrena.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awrepl.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awreport.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awresearch.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awresume.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awrise.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awrouter.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awrtifact.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awrun.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awsaga.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awscope.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awscreen.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awseal.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awsettings.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awsh.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awshare.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awskills.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awspaces.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awsprite.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awsuite.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awswarm.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awsync.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awtax.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awtoll.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awtunnel.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awvision.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awvoice.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/awwall.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/bead-space.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/browser-companion-graduation.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/cited-research.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/creator-stack.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/dark-matters-living-world.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/dgg-research.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/free-cloud.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/gawbbonet.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/gobbonet.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/guide-00.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/guide-01.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/guide-02.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/guide-03.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/guide-04.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/guide-05.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/guide-06.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/guide-07.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/guide-08.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/guide-09.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/guide-10.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/guide-11.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/guide.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/inference-commons.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-01.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-02.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-03.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-04.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-05.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-06.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-07.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-08.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-09.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-10.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-11.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-12.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-13.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-14.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-15.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-16.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-17.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-18.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-19.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-20.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-21.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-22.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-23.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-24.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-25.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-26.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-27.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-28.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-29.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/law-30.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/mediaforge.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/mine-what-you-ran.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/one-surface.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/open-scheduler.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/persona.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/personal-agent-home.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/personal-mesh-pool.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/provenance.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/ps5-bridge.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/retrieval-you-trained.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/set-and-forget.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/shared-worktree.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/the-aither-way-claude-code.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/the-daily-driver.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/the-front-door.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/the-reasoning-loop.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/the-studio.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/train-what-you-run.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/trust.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/wake-learning-loop.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/who-what-did.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno/pages/workspace-bridge.json +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno.egg-info/dependency_links.txt +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno.egg-info/entry_points.txt +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno.egg-info/requires.txt +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/awkno.egg-info/top_level.txt +0 -0
- {awkno-0.2.7 → awkno-0.2.8}/setup.cfg +0 -0
|
@@ -118,11 +118,22 @@ class AwknoGenerator:
|
|
|
118
118
|
|
|
119
119
|
# Generate a page per pack ON THE SHELF. Held packs are absent by
|
|
120
120
|
# design — see _make_pack_page.
|
|
121
|
+
# A pack that shares an id with a registry brick or stack (awnode and awdesk
|
|
122
|
+
# each ship a shelf pack of the same name) must NOT overwrite that page: the
|
|
123
|
+
# registry owns the id, and the overwrite made EC012 report the brick as
|
|
124
|
+
# absent from the corpus after every regen.
|
|
125
|
+
registry_ids = set(pages)
|
|
121
126
|
if self.shelf_dir.exists():
|
|
122
127
|
for manifest in sorted(self.shelf_dir.glob("*/pack.yaml")):
|
|
123
128
|
page = self._make_pack_page(manifest)
|
|
124
|
-
if page is
|
|
125
|
-
|
|
129
|
+
if page is None:
|
|
130
|
+
continue
|
|
131
|
+
key = page["topic"].lower()
|
|
132
|
+
if key in registry_ids:
|
|
133
|
+
print(f"[SKIP] pack {key!r}: the id is a registry brick or "
|
|
134
|
+
f"stack; the registry page wins")
|
|
135
|
+
continue
|
|
136
|
+
pages[key] = page
|
|
126
137
|
|
|
127
138
|
# Generate law pages
|
|
128
139
|
if self.laws_dir.exists():
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"adopt": "# Only inside a checkout of this repository, or where the addon manifest has\n# been installed to ~/.aither/components. From PyPI alone this raises\n# \"Unknown addon: aitherbrowser\".\npip install awdk\n\n# Start the browser here (port 8132) and\n# register what it finds:\nadk addon enable aitherbrowser\n\n# Confirm it is serving. The image answers TLS when configured and plain\n# HTTP on a bare node, so probe the one you actually started.\ncurl -fsS http://127.0.0.1:8132/health\n\n# Status, and the container's own log when something is wrong:\nadk addon status aitherbrowser\nadk addon logs aitherbrowser",
|
|
3
|
+
"category": "pack",
|
|
4
|
+
"description": "Kind: pack\n\nWhat it does\nRun AitherBrowser on your own machine: an untethered Chromium an agent drives with the pilot_* tools — sessions, screenshots, extraction, taught recipes and saved logins that stay on your disk and never touch anyone else's hardware.\n\nRuntime\nawdk>=3.8.0\n\nTools\n pilot_open\n pilot_navigate\n pilot_observe\n pilot_parse_ui\n pilot_look\n pilot_click\n pilot_fill\n pilot_scroll\n pilot_extract\n pilot_save_login\n pilot_done\n pilot_close",
|
|
5
|
+
"see_also": [
|
|
6
|
+
"awdk",
|
|
7
|
+
"awpack"
|
|
8
|
+
],
|
|
9
|
+
"status": "preview",
|
|
10
|
+
"synopsis": "Run AitherBrowser on your own machine: an untethered Chromium an agent drives with the pilot_* tools — sessions, screenshots, extraction, taught recipes and saved logins that stay on your disk and never touch anyone else's hardware.",
|
|
11
|
+
"topic": "aitherbrowser"
|
|
12
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"adopt": "Describe one capability in one file and get the same name, arguments and JSON back from CLI, Python, MCP and relay.",
|
|
3
|
+
"category": "brick",
|
|
4
|
+
"description": "Kind: tool\n\nProblem\nA tool that ships a CLI, a Python API and an MCP server ends up with three names, three argument shapes and three result formats, and nothing tells you which of them still work.\n\nInstall\nnot yet published; builds in-tree\n\nCommands\n awcap",
|
|
5
|
+
"see_also": [
|
|
6
|
+
"awdk",
|
|
7
|
+
"awnode",
|
|
8
|
+
"awrelay",
|
|
9
|
+
"awm",
|
|
10
|
+
"awflow",
|
|
11
|
+
"awgit"
|
|
12
|
+
],
|
|
13
|
+
"status": "planned",
|
|
14
|
+
"synopsis": "Describe a capability once; call it the same way from CLI, Python, MCP and relay.",
|
|
15
|
+
"topic": "awcap"
|
|
16
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"adopt": "# Chrome Web Store:\n# https://chromewebstore.google.com/detail/awconnect/peeojgjhjficedkncdejbfnacooodbak\n#\n# Source (MIT): https://github.com/Aitherium/AitherConnect\n# Load unpacked from a checkout of `awconnect/` if you want your own build.\n#\n# Start a local daemon BEFORE expecting it to pair — `awnode mcp`, or the awsh\n# harness on :8362. With no daemon listening it reports\n# \"No awdk daemon answered ...; using Cloud\"\n# and the page goes through the cloud instead of your machine. That fallback\n# is deliberate; it is also the thing to check first when it \"feels remote\".",
|
|
3
|
+
"category": "pack",
|
|
4
|
+
"description": "Kind: pack\n\nWhat it does\nAdd the awconnect browser extension: it hands an agent the page you are looking at, pairs over loopback to a local daemon, and falls back to the cloud only when no daemon answers.\n\nRuntime\nawdk>=3.8.0",
|
|
5
|
+
"see_also": [
|
|
6
|
+
"awdk",
|
|
7
|
+
"awpack"
|
|
8
|
+
],
|
|
9
|
+
"status": "preview",
|
|
10
|
+
"synopsis": "Add the awconnect browser extension: it hands an agent the page you are looking at, pairs over loopback to a local daemon, and falls back to the cloud only when no daemon answers.",
|
|
11
|
+
"topic": "awconnect"
|
|
12
|
+
}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"adopt": "Run it, and the next decision card an agent raises pops on your desktop instead of scrolling past in a log.",
|
|
3
3
|
"category": "brick",
|
|
4
|
-
"description": "Kind: runtime\n\nProblem\nEvery surface an agent has on a laptop lives in a browser tab that can be closed, minimized or forgotten. The desk is the one that stays: an always-on presence that can interrupt you with a decision card, embody an agent as an avatar, and hold the Living Desktop over your real desktop.\n\nInstall\nsee the repo -- Electron app (npm install && npx electron .)\n\nQuick start\n npm install\n npm run demo\n\nDocs\nhttps://aitherium.github.io/awdesk/",
|
|
4
|
+
"description": "Kind: runtime\n\nProblem\nEvery surface an agent has on a laptop lives in a browser tab that can be closed, minimized or forgotten. The desk is the one that stays: an always-on presence that can interrupt you with a decision card, embody an agent as an avatar, and hold the Living Desktop over your real desktop. It also replaces the Windows utilities, each synced to AitherOS Online and reachable by agents through awsh, adk and AwNode under one command id: a snipping tool (PrintScreen), clipboard sync, a screen recorder (Shift+PrintScreen), a System window for processes, ports and connections, a File Explorer (Win+E, opt-in), Search this PC (Alt+Space) and a one-click public URL for a local port.\n\nInstall\nsee the repo -- Electron app (npm install && npx electron .)\n\nQuick start\n npm install\n npm run demo\n\nDocs\nhttps://aitherium.github.io/awdesk/",
|
|
5
5
|
"see_also": [
|
|
6
6
|
"awdk",
|
|
7
7
|
"awsh",
|
|
@@ -11,7 +11,9 @@
|
|
|
11
11
|
"awavatar",
|
|
12
12
|
"AitherConnect",
|
|
13
13
|
"awdaemons",
|
|
14
|
-
"awsettings"
|
|
14
|
+
"awsettings",
|
|
15
|
+
"awnode",
|
|
16
|
+
"awtunnel"
|
|
15
17
|
],
|
|
16
18
|
"status": "public",
|
|
17
19
|
"synopsis": "Aither World Desk -- the desktop body of AitherOS Online: tray, avatars, decision cards, the Living Desktop as an overlay.",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"adopt": "Point it at a backend you already pay for and run one agent loop.",
|
|
3
3
|
"category": "brick",
|
|
4
|
-
"description": "Kind: runtime\n\nProblem\nRunning one agent is easy and running fifty is a different job: budgets, retries, which model, whose machine. Most frameworks make you adopt their whole world to find out.\n\nInstall\npip install awdk\n\nCommands\n adk\n adk-awdelegate\n adk-bug\n adk-py\n adk-serve\n adk-shell\n adk-workspace\n aither-adk\n aither-hearth\n awdk\n\nQuick start\n pip install awdk\n adk quickstart # auto-detect hardware, set up inference\n adk init my-agent && cd my-agent && python agent.py\n\nIn Claude Code\n plugin awsh@awsh\n command adk claude setup\n command adk claude doctor\n skill /awdk\n\nDocs\nhttps://aitherium.github.io/awdk/",
|
|
4
|
+
"description": "Kind: runtime\n\nProblem\nRunning one agent is easy and running fifty is a different job: budgets, retries, which model, whose machine. Most frameworks make you adopt their whole world to find out.\n\nInstall\npip install awdk\n\nCommands\n adk\n adk-awdelegate\n adk-bug\n adk-py\n adk-serve\n adk-shell\n adk-workspace\n aither-adk\n aither-hearth\n awdk\n\nQuick start\n pip install awdk\n adk quickstart # auto-detect hardware, set up inference\n adk init my-agent && cd my-agent && python agent.py\n\nIn Claude Code\n plugin awsh@awsh\n command adk claude setup\n command adk claude doctor\n mcp python -m adk.harnesses.mcp_stdio\n skill /awdk\n\nDocs\nhttps://aitherium.github.io/awdk/",
|
|
5
5
|
"see_also": [
|
|
6
6
|
"aitheros",
|
|
7
7
|
"awskills",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"adopt": "Hand it a failure and get back ranked candidate causes, each with the one observation that would rule it in or out.",
|
|
3
3
|
"category": "brick",
|
|
4
|
-
"description": "Kind: tool\n\nProblem\nDebugging with an agent collapses onto the first plausible story, because nothing forces a second. The cost is not the wrong guess, it is the hours spent proving it — measured repeatedly here, where five hypotheses were spent on a service that was genuinely correct, and where a symptom named the wrong component so consistently that \"the symptom names the INNOCENT service\" had to be written down as a standing rule.\n\nInstall\npip install awprism\n\nCommands\n awprism\n\nQuick start\n pip install awprism\n\nIn Claude Code\n mcp awprism mcp
|
|
4
|
+
"description": "Kind: tool\n\nProblem\nDebugging with an agent collapses onto the first plausible story, because nothing forces a second. The cost is not the wrong guess, it is the hours spent proving it — measured repeatedly here, where five hypotheses were spent on a service that was genuinely correct, and where a symptom named the wrong component so consistently that \"the symptom names the INNOCENT service\" had to be written down as a standing rule.\n\nInstall\npip install awprism\n\nCommands\n awprism\n\nQuick start\n pip install awprism\n\nIn Claude Code\n mcp awprism mcp\n\nDocs\nhttps://aitherium.github.io/awprism/",
|
|
5
5
|
"see_also": [
|
|
6
6
|
"awreason",
|
|
7
7
|
"awrepl",
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
{
|
|
2
|
+
"adopt": null,
|
|
3
|
+
"category": "stack",
|
|
4
|
+
"description": "An open-source private cloud you run yourself: identity, directory, RBAC, secrets, certificates, object storage, events, metrics, audit, messaging, jobs and tunnels, on an immutable awnix base on hardware you own. The parts a stranger can adopt alone are these bricks. The control plane behind them (Identity, Directory, Secrets, Strata, Flux, Pulse, Watch, Chronicle, Nexus, Relay) is a set of platform services that the sovereign-replica layer set stands up, not bricks. Solutions (CRM, mail, web hosting, MDM, the OccupySaaS packs) ship as optional packs on top and are never baked in. Design and the AWS service map: `.AITHEROS/43-AITHER-WORLD-SERVICES.md`.\n\nIncludes: awnix, awdaemons, awrun, awiam, awbac, awdit, awseal, awrelay, awtunnel, awpack",
|
|
5
|
+
"see_also": [
|
|
6
|
+
"awnix",
|
|
7
|
+
"awdaemons",
|
|
8
|
+
"awrun",
|
|
9
|
+
"awiam",
|
|
10
|
+
"awbac",
|
|
11
|
+
"awdit",
|
|
12
|
+
"awseal",
|
|
13
|
+
"awrelay",
|
|
14
|
+
"awtunnel",
|
|
15
|
+
"awpack"
|
|
16
|
+
],
|
|
17
|
+
"status": "partial",
|
|
18
|
+
"synopsis": "Aither World Services",
|
|
19
|
+
"topic": "aws"
|
|
20
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"adopt": "# Source (Apache-2.0): https://github.com/occupysaas/salescompel\ngit clone https://github.com/occupysaas/salescompel\ncd salescompel\n\n# It needs PostgreSQL, and NOTHING UPSTREAM CREATES THE LOGINS OR THE GRANTS —\n# the role names below are examples you choose, not names the project defines.\n# The one rule the program enforces: migrations run as an OPERATOR principal\n# and serve runs as a RUNTIME principal that does not own the database\n# (serve refuses owner privileges). Grant the runtime logins what the schema\n# needs; the repository's docs are the authority on which privileges.\ncreatedb salescompel\npsql -d salescompel -c \"CREATE ROLE salescompel_op LOGIN PASSWORD 'change-me';\"\npsql -d salescompel -c \"CREATE ROLE salescompel_app LOGIN PASSWORD 'change-me';\"\npsql -d salescompel -c \"CREATE ROLE salescompel_id LOGIN PASSWORD 'change-me';\"\n\nexport MIGRATION_DATABASE_URL='postgres://salescompel_op@127.0.0.1:5432/salescompel?sslmode=disable'\nexport DATABASE_URL='postgres://salescompel_app@127.0.0.1:5432/salescompel?sslmode=disable'\nexport AUTH_DATABASE_URL='postgres://salescompel_id@127.0.0.1:5432/salescompel?sslmode=disable'\n\n# Build, migrate, create the first user, then serve.\ngo build -o salescompel ./cmd/salescompel\n./salescompel migrate status # forward-only migrations; never run at startup\n./salescompel migrate up\nSALESCOMPEL_TENANT=acme SALESCOMPEL_USERNAME=admin@example.com \\\n SALESCOMPEL_PASSWORD='<choose-one>' SALESCOMPEL_ROLE=owner \\\n ./salescompel user create # reads the four env vars above\n./salescompel serve -addr 127.0.0.1:8080\n\n# The UI is BUILT assets, not source: -assets defaults to web/dist. Build them\n# once with Node 22.12 or newer, or pass -assets \"\" to serve the API alone.\n# (cd web && npm ci && npm run build)\n#\n# A non-loopback listener is REFUSED without TLS. That is deliberate:\n# ./salescompel serve -addr 0.0.0.0:8443 -tls-cert cert.pem -tls-key key.pem",
|
|
3
|
+
"category": "pack",
|
|
4
|
+
"description": "Kind: pack\n\nWhat it does\nRun SalesCompel — the Apache-2.0, work-in-progress Salesforce replacement from the OccupySaaS community — from source: a Go/PostgreSQL candidate with a Vue record workflow, OAuth with PKCE, and a compatibility laboratory. This pack records how to build and serve it; it never vendors or hosts it.\n\nRuntime\nawdk>=3.8.0",
|
|
5
|
+
"see_also": [
|
|
6
|
+
"awdk",
|
|
7
|
+
"awpack"
|
|
8
|
+
],
|
|
9
|
+
"status": "preview",
|
|
10
|
+
"synopsis": "Run SalesCompel — the Apache-2.0, work-in-progress Salesforce replacement from the OccupySaaS community — from source: a Go/PostgreSQL candidate with a Vue record workflow, OAuth with PKCE, and a compatibility laboratory",
|
|
11
|
+
"topic": "salescompel"
|
|
12
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
{
|
|
2
|
+
"adopt": "# Source, docs and the compatibility matrix (Apache-2.0):\n# https://github.com/occupysaas/zeroauthy\ngit clone https://github.com/occupysaas/zeroauthy\ncd zeroauthy\n\n# Their quickstart (docs/quickstart.md) covers the TLS certificate pair and\n# master.key that the server requires before it will start.\n# Put cert.pem, key.pem and master.key where the run command below expects.\n\n# Run the published image. Tag 1.0.0-rc.1 is the current public release.\ndocker run -d --name zeroauthy -p 8443:8443 -v zeroauthy-data:/data \\\n -v \"$PWD/certs:/certs:ro\" \\\n -e ZEROAUTHY_SERVER__LISTEN=:8443 \\\n -e ZEROAUTHY_SERVER__SYSTEM_HOST=system.localhost:8443 \\\n -e ZEROAUTHY_SERVER__TLS_CERT_FILE=/certs/cert.pem \\\n -e ZEROAUTHY_SERVER__TLS_KEY_FILE=/certs/key.pem \\\n -e ZEROAUTHY_SECURITY__MASTER_KEY=\"$(cat master.key)\" \\\n ghcr.io/occupysaas/zeroauthy:1.0.0-rc.1\n\n# First admin, then sign in at https://system.localhost:8443/\ndocker exec zeroauthy zeroauthy admin create --email you@example.com\n\n# No Docker? Release binaries for linux/amd64, linux/arm64 and darwin/arm64\n# are on their releases page, with a SHA256SUMS file.",
|
|
3
|
+
"category": "pack",
|
|
4
|
+
"description": "Kind: pack\n\nWhat it does\nStand up zeroauthy — the Apache-2.0 Go identity provider from the OccupySaaS community — from its published container image or its release binaries. This pack installs and documents it; it never vendors or hosts it.\n\nRuntime\nawdk>=3.8.0",
|
|
5
|
+
"see_also": [
|
|
6
|
+
"awdk",
|
|
7
|
+
"awpack"
|
|
8
|
+
],
|
|
9
|
+
"status": "preview",
|
|
10
|
+
"synopsis": "Stand up zeroauthy — the Apache-2.0 Go identity provider from the OccupySaaS community — from its published container image or its release binaries",
|
|
11
|
+
"topic": "zeroauthy"
|
|
12
|
+
}
|
|
@@ -15,6 +15,7 @@ awkno.egg-info/top_level.txt
|
|
|
15
15
|
awkno/pages/agent-senses.json
|
|
16
16
|
awkno/pages/agent-vm.json
|
|
17
17
|
awkno/pages/agentic-orchestrator.json
|
|
18
|
+
awkno/pages/aitherbrowser.json
|
|
18
19
|
awkno/pages/aitherconnect.json
|
|
19
20
|
awkno/pages/aitherkvcache.json
|
|
20
21
|
awkno/pages/aitheros.json
|
|
@@ -30,7 +31,9 @@ awkno/pages/awbrain.json
|
|
|
30
31
|
awkno/pages/awbrowse.json
|
|
31
32
|
awkno/pages/awcache.json
|
|
32
33
|
awkno/pages/awcams.json
|
|
34
|
+
awkno/pages/awcap.json
|
|
33
35
|
awkno/pages/awclassify.json
|
|
36
|
+
awkno/pages/awconnect.json
|
|
34
37
|
awkno/pages/awdaemons.json
|
|
35
38
|
awkno/pages/awdata.json
|
|
36
39
|
awkno/pages/awdecide.json
|
|
@@ -85,6 +88,7 @@ awkno/pages/awrise.json
|
|
|
85
88
|
awkno/pages/awrouter.json
|
|
86
89
|
awkno/pages/awrtifact.json
|
|
87
90
|
awkno/pages/awrun.json
|
|
91
|
+
awkno/pages/aws.json
|
|
88
92
|
awkno/pages/awsaga.json
|
|
89
93
|
awkno/pages/awscope.json
|
|
90
94
|
awkno/pages/awscreen.json
|
|
@@ -168,6 +172,7 @@ awkno/pages/personal-mesh-pool.json
|
|
|
168
172
|
awkno/pages/provenance.json
|
|
169
173
|
awkno/pages/ps5-bridge.json
|
|
170
174
|
awkno/pages/retrieval-you-trained.json
|
|
175
|
+
awkno/pages/salescompel.json
|
|
171
176
|
awkno/pages/set-and-forget.json
|
|
172
177
|
awkno/pages/shared-worktree.json
|
|
173
178
|
awkno/pages/the-aither-way-claude-code.json
|
|
@@ -180,4 +185,5 @@ awkno/pages/trust.json
|
|
|
180
185
|
awkno/pages/wake-learning-loop.json
|
|
181
186
|
awkno/pages/who-what-did.json
|
|
182
187
|
awkno/pages/workspace-bridge.json
|
|
188
|
+
awkno/pages/zeroauthy.json
|
|
183
189
|
tests/test_awkno.py
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "awkno"
|
|
7
|
-
version = "0.2.
|
|
7
|
+
version = "0.2.8"
|
|
8
8
|
description = "The man page for the Aither World — every brick, stack and law, in your terminal, offline."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -247,6 +247,43 @@ class TestAwknoRegistry:
|
|
|
247
247
|
data2_str = json.dumps(pages2[key], sort_keys=True)
|
|
248
248
|
assert data1_str == data2_str, f"Page {key} differs between runs"
|
|
249
249
|
|
|
250
|
+
def test_shelf_pack_never_overwrites_a_registry_brick(self, tmp_path):
|
|
251
|
+
"""A pack named like a brick (awnode, awdesk) must not replace the brick page.
|
|
252
|
+
|
|
253
|
+
It did: packs were written after bricks into the same dict key, so every
|
|
254
|
+
regen turned the `awnode` brick page into a pack page and EC012 then
|
|
255
|
+
reported the brick as absent from the offline corpus.
|
|
256
|
+
"""
|
|
257
|
+
from awkno.generate import AwknoGenerator
|
|
258
|
+
|
|
259
|
+
root = tmp_path / "AitherOS"
|
|
260
|
+
(root / "config").mkdir(parents=True)
|
|
261
|
+
(root / "config" / "ecosystem.yaml").write_text(
|
|
262
|
+
"bricks:\n"
|
|
263
|
+
" - id: awzed\n name: awzed\n kind: runtime\n status: public\n"
|
|
264
|
+
" problem: p\n adopt: a\n",
|
|
265
|
+
encoding="utf-8")
|
|
266
|
+
shelf = tmp_path / "awpack" / "packs"
|
|
267
|
+
shelf.mkdir(parents=True)
|
|
268
|
+
real = Path(__file__).resolve()
|
|
269
|
+
while real != real.parent and not (real / "awpack" / "packs" / "awnode").is_dir():
|
|
270
|
+
real = real.parent
|
|
271
|
+
src = real / "awpack" / "packs" / "awnode" / "pack.yaml"
|
|
272
|
+
if not src.is_file():
|
|
273
|
+
pytest.skip("standalone awkno checkout: no shelf pack to copy")
|
|
274
|
+
(shelf / "awzed").mkdir()
|
|
275
|
+
text = src.read_text(encoding="utf-8").replace("awnode", "awzed")
|
|
276
|
+
(shelf / "awzed" / "pack.yaml").write_text(text, encoding="utf-8")
|
|
277
|
+
out = tmp_path / "pages"
|
|
278
|
+
out.mkdir()
|
|
279
|
+
|
|
280
|
+
gen = AwknoGenerator(str(root), output_dir=str(out))
|
|
281
|
+
assert gen._make_pack_page(shelf / "awzed" / "pack.yaml") is not None, \
|
|
282
|
+
"fixture pack must be a real shelf page or the test proves nothing"
|
|
283
|
+
pages = gen.generate()
|
|
284
|
+
|
|
285
|
+
assert pages["awzed"]["category"] == "brick", pages["awzed"]
|
|
286
|
+
|
|
250
287
|
def test_scrub_removes_empty_span_and_keeps_code_fences(self):
|
|
251
288
|
"""The empty-span safety net must not eat two-thirds of a ``` fence.
|
|
252
289
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|