Repository navigation
feat(ui): expose NDOs as Moss assets - #182
Merged
Merged
Conversation
Soushi888
force-pushed
the
feat/moss-ndo-assets
branch
from
November 4, 2026 01:39
b141278 to
f053ef1
Compare
Soushi888
marked this pull request as ready for review
November 4, 2026 02:27
Soushi888
force-pushed
the
feat/moss-ndo-assets
branch
from
November 4, 2026 02:45
f053ef1 to
6c2f083
Compare
Soushi888
marked this pull request as draft
November 4, 2026 03:51
Soushi888
force-pushed
the
feat/moss-ndo-assets
branch
from
November 4, 2026 03:52
6c2f083 to
b0837b7
Compare
Soushi888
force-pushed
the
feat/moss-ndo-assets
branch
from
November 4, 2026 04:15
b0837b7 to
c8abdc4
Compare
Each NDO gets a WAL (its clone DNA and identity record). getAssetInfo and search answer from the group's NDO anchors through the applet client Moss passes, an asset view or a main view on a WAL opens the NDO, and the NDO view can add it to the Moss pocket. Moss maps a WAL to a tool through the DNAs of the agent's own conductor, and NDO clones are not public to the Moss group yet, so the tool joins every anchored NDO clone in the background. The service layer builds AppletServices and hands it to connectMoss, keeping lib/moss/connect.ts free of $lib/services (invariant I1).
Soushi888
force-pushed
the
feat/moss-ndo-assets
branch
from
November 4, 2026 04:45
c8abdc4 to
845e07d
Compare
Soushi888
marked this pull request as ready for review
November 4, 2026 05:08
Collaborator
Author
Review APPROVE at head 845e07d, merging under Soushi's explicit
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Each NDO is now a Moss asset, so other tools can point at it. An NDO has a Weave Asset Locator (its clone DNA plus its identity record),
getAssetInfoandsearchanswer for it, an NDO linked from another tool opens in Nondominium (alone, in the side panel or window), and the NDO view can add it to the Moss pocket. In the recorded two-agent run, Moss resolved Alice's NDO through ourgetAssetInfoon Bob's side andopenAssetopened it in Bob's side panel. One consequence of the open question on #181: an asset only resolves on a member's machine once that member has joined the NDO's clone, so the tool joins every anchored NDO in the background on load.Closes #165
Stacked on #181 (#164), in the native stack #179 (#130, #178, #180, #181, this PR). Review only this layer's diff; everything below belongs to the parent PRs.
Intent
Other Moss tools cannot point at an NDO, so an NDO is invisible outside Nondominium. Decided on 2026-11-03: NDOs are exposed as assets (WAL,
getAssetInfo,search,openAsset).Changes
moss/assets.ts(pure):ndoWal,walToNdo,ndoPath,findAnchorForWal,ndoAssetInfo(name plus an inline icon),searchNdoAssets(name contains the filter, ignoring case).moss/anchors.ts: reads the NDO anchors of the instance'sgroupcell through the applet client Moss passes toAppletServices, sincesearchandgetAssetInforun outside the UI's stores.moss/applet-services.ts:createAppletServices(source)setssearchandgetAssetInfo. The service layer builds it (holochain.service) and passes it down throughhc-connecttoconnectMoss, becauselib/moss/connect.tsis reachable from components and invariant I1 forbids it importing$lib/services(the architecture check caught the first attempt).openAsset. In@theweave/api0.7.0-rc.3it is not a method onAppletServices: Moss renders the tool with anassetview, or with the main view on a WAL.moss/view.tsturns either into the NDO route; the layout navigates there; in an asset viewAppShellshows the NDO alone, without the sidebar.Add to Moss pocketin the NDO view (weaveClient.assets.assetToPocket), inside the existing button row, only in Moss.joinAnchoredNdoCells(NdoService, withmoss/ndo-cells.ts): joins the clone of every anchored NDO in the background, one at a time, a failure never stopping the others. Needed because Moss maps a WAL to a tool through the DNAs in the agent's own conductor, and NDO clones are not public to the Moss group (feat(ui): Moss group context for groups and NDOs #181).moss-integration.md(assets section),ui_architecture.md,IMPLEMENTATION_STATUS.md,CHANGELOG.md.Decisions
NdoAnchorrecord (resolvable by every member without joining anything)lifecycle_stage,name), so it is not a stable locator, and the original hash is not exposed to the UI today. The clone DNA plus the identity record is permanent (ADR-010).source chain head has moved.How to test
git checkout feat/moss-ndo-assets nix develop -c bun run --filter ui check nix develop -c bash -c 'cd ui && bunx vitest run --project server' nix develop -c bun run e2e nix develop -c bun run tool-devRecorded two-agent dev-mode run (2026-11-03, repo config, nested X server, driven through the tool iframes over CDP):
Moss Seed Library. From Alice's tool,weaveClient.assets.assetInfo(wal)for the NDO's WAL returnsMoss Seed Librarywith an inline icon: Moss resolved the WAL to our tool and called ourgetAssetInfo.assetInfocall from Bob's tool returnsMoss Seed Library.weaveClient.openAsset(wal, 'side')from Bob's tool opens a side panel titledMoss Seed Librarywith the NDO detail and no sidebar, the tab showing our icon and the name fromgetAssetInfo.searchand the Moss pocket are covered by unit tests; I did not drive the Moss search dialog by hand.Documentation
Updated in this PR:
moss-integration.md,ui_architecture.md,IMPLEMENTATION_STATUS.md,CHANGELOG.md.Related
Open questions for Soushi
publicToGroupMembers = falsean NDO resolves as an asset only where the member joined the clone, so the tool joins them all in the background. Every member then hosts every NDO of the group, which is what public clones would have meant anyway; the difference is that wdocker does not do the hosting. My lean: keep, flipPUBLIC_NDO_CLONESwhen Moss accepts properties.AppletServices.openAsset. The issue listsopenAssetnext togetAssetInfoandsearch. In@theweave/api0.7.0-rc.3there is none onAppletServices; opening is theassetrender view, which this PR implements. Nothing to decide unless a later Moss version adds the method.Pre-open review
Closes #165, stack position stated. Pass.feat/moss-group-context, no conflicts. Pass.lib/moss/connect.tsinto$lib/services, fixed by injecting the applet services from the service layer. Standalone paths are untouched (every Moss branch is behindmossStore.isMossor the host check). No blockers.bun run --filter ui check: 0 errors, invariants I1 to I3 hold. The client project still has the one failure that fails onchore/holochain-0.7too.openAssetare covered by the recorded run.