Skip to content

Conversation

@dellams
Copy link
Collaborator

@dellams dellams commented Dec 22, 2025

Note

  • Providers & Bootloader: Activates and registers multiple providers (Ethereum, EOSIO, Telos, SEEDS, Bitcoin, Aptos, Avalanche, Base, Sui, Hashgraph, Cosmos, ActivityPub, etc.) with error handlers; updates project refs and DNA settings (keys/addresses) to support them.
  • Search & NFT APIs: Adds metadata filtering (FilterByMetaData, MetaKeyValuePairMatchMode) to SearchParams, HolonManager search methods, and INFTManager search signatures; supports recursive/parent filtering and match modes.
  • NFT & Core Models: Adds ParentWeb4NFTId to IWeb3NFT/Web3NFT; introduces STARNETSubCategory to ISTARNETDNA.
  • Metadata & Core tweaks: MetaDataHelper hides internal keys (WEB5STARNFTId, {{{newnft}}}) from display; initialize Holon.Nodes to an empty list.
  • Docs: Adds three comprehensive docs summarizing technology, meetings, architecture, and use cases.

Written by Cursor Bugbot for commit 449cfd1. This will update automatically on new commits. Configure here.

Copy link

@cursor cursor bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This PR is being reviewed by Cursor Bugbot

Details

You are on the Bugbot Free tier. On this plan, Bugbot will review limited PRs each billing cycle.

To receive Bugbot reviews on all of your PRs, visit the Cursor dashboard to activate Pro and start your 14-day free trial.

}
return false;
#else
return false;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Python fallback code unreachable due to commented preprocessor directive

The #else preprocessor directive was changed to //#else (a comment) at multiple locations, breaking the conditional compilation structure. The reflection-based fallback code that dynamically loads Python.NET at runtime is now unreachable when PYTHONNET_AVAILABLE is not defined. When the symbol is not defined, only return false; executes (or nothing for the third location), completely skipping the fallback path that was intended to detect Python.NET at runtime. This silently breaks Python interop for users without compile-time Python.NET support.

Additional Locations (2)

Fix in Cursor Fix in Web

{
// Return the first omniverse found (should only be one)
result.Result = searchResult.Result.FirstOrDefault();
result.Result = searchResult.Result.FirstOrDefault() as IOmiverse;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Silent null return when holon cast fails after search

The search pattern was changed from SearchHolonsForParentAsync<IOmiverse> to SearchHolonsForParentAsync<Holon> with a subsequent as IOmiverse cast. When the search succeeds but the as cast fails (returning null), the method returns without setting an error, leaving result.Result as null. Callers receive a success result with null data, which could cause null reference exceptions or silent failures downstream. The same pattern appears in GetOrCreateUserMultiverseAsync, GetMagicVerseAsync, and GetGrandSimulationAsync.

Additional Locations (2)

Fix in Cursor Fix in Web


return _EOSIO;
}
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Race condition in lazy-initialized provider properties returns null

The newly uncommented provider properties (EOSIO, Ethereum, Telos, ActivityPub) use Task.Run to asynchronously initialize the backing field but immediately return the field value without awaiting completion. On first access, this returns null because the async registration hasn't finished yet. The fire-and-forget pattern means callers receive null and subsequent accesses may still race with the ongoing initialization.

Additional Locations (2)

Fix in Cursor Fix in Web

var docstringMatch = System.Text.RegularExpressions.Regex.Match(
afterDef,
@"(?:"""""(.*?)"""""|'''(.*?)''')",
@"(?:""""""""""(.*?)""""""""""|'''(.*?)''')",
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Python docstring regex matches wrong quote count

The regex pattern for extracting Python docstrings uses """""""""" (10 quote characters) in a C# verbatim string, which translates to 5 actual " characters in the pattern. However, Python docstrings use triple quotes ("""). The pattern will never match standard Python triple-double-quote docstrings, causing ExtractPythonDocstring to always return empty for """-style docstrings.

Fix in Cursor Fix in Web

- Added more documentation.

- Fixed many providers.

- Added postman endpoints with examples for STAR API.

- Updated the OASIS API postman json file with latest API changes and added additional examples.

- Multiple bug fixes including in the new COSMIC API & STARNET Plugin System.
Added the rest of web3 nft support such as edit, search, list etc to STAR.CLI and can now also start and stop the WEB4 OASIS API Server and WEB5 STAR API Server within STAR CLI.
- Fixed many bugs in STARCLI

- Misc UI/UX/Flow improvements in STAR CLI.
// nearProvider.OnStorageProviderError += NEAROASIS_StorageProviderError;
// result.Result = nearProvider;
break;
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Provider registration silently fails with null result

The NEAROASIS and MoralisOASIS switch cases have their implementations commented out but still exist in the switch statement. When either provider type is requested, the case executes and breaks without setting result.Result or result.IsError. The caller receives a result with IsError=false (success) but Result=null (no provider), causing a silent failure. This can lead to null reference exceptions downstream when code assumes a successful result contains a valid provider.

Additional Locations (1)

Fix in Cursor Fix in Web

/// <summary>
/// PHP libraries (alias)
/// </summary>
PHP,
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Duplicate PHP enum values are not true aliases

The Php and PHP enum values are documented as aliases but in C# enums, separate values automatically receive different underlying integers. Comparing InteropProviderType.Php with InteropProviderType.PHP will return false since they're distinct values. For true aliasing, both values would need to be explicitly assigned the same integer value (e.g., PHP = Php).

Fix in Cursor Fix in Web

- Fixed a bug in the STARNET Dependency system in AddDependencyAsync method in STARNETUIBase in STAR.CLI.Lib.
… MetaDataHelper in OASIS.API.Core.

- Fixed bugs in MintNFTInternalAsync & FormatSuccessMessage in NFTManager in OASIS.API.ONODE.Core.

- Fixed bugs in LightWizardAsync & CreateOAPPComponentsOnSTARNETAsync in OAPPs in STARNET.CLI.Lib.
{
CLIEngine.ShowMessage($" {i}. {kv.Key} = {GetMetaValue(kv.Value)}");
i++;
}
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Filtered display causes wrong metadata entries to be edited

The ManageMetaData method displays metadata entries with numbered indices while filtering out hidden keys ("WEB5STARNFTId" and "{{{newnft}}}"). However, when the user selects an entry to edit or remove, the code uses metaData.Keys.ElementAt(index - 1) on the unfiltered dictionary. This mismatch causes users to edit/remove the wrong entry, or accidentally modify hidden internal keys. The index validation also uses unfiltered metaData.Count, allowing selection of indices that don't correspond to visible items.

Additional Locations (1)

Fix in Cursor Fix in Web

Added a new grant entry for OpenServ in the Grants & Case Studies section.
Removed '✅ COMPLETED' from section headers in README.
Removed detailed visual architecture diagrams and updated HyperDrive architecture section.
Added a link to the OASIS Torus architecture diagram.
Added an image tag for the OASIS Torus architecture diagram in the README.
var chainIdHex = OASISDNA.OASIS.StorageProviders.AvalancheOASIS.ChainId ?? "0x0";
var chainId = chainIdHex.StartsWith("0x")
? BigInteger.Parse(chainIdHex.Substring(2), System.Globalization.NumberStyles.HexNumber)
: BigInteger.Parse(chainIdHex);
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Empty ChainId string causes FormatException during provider initialization

The BigInteger.Parse calls for AvalancheOASIS and BaseOASIS will throw a FormatException if ChainId is configured as an empty string. The null-coalescing operator ?? only handles null, not empty strings. If a user sets ChainId = "" in configuration, BigInteger.Parse("") crashes the provider initialization. Similarly, a value of "0x" (hex prefix with no digits) would cause Substring(2) to return an empty string, also throwing. Missing validation for empty or malformed ChainId values before parsing.

Additional Locations (1)

Fix in Cursor Fix in Web

using System;
using System.Threading;
using System.Threading.Tasks;
using NextGenSoftware.OASIS.API.Core.Helpers;
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Factory method missing cases for new interop provider types

The CreateProvider switch expression only handles 9 of the 24 InteropProviderType enum values. The new enum values added in this commit (TypeScript, Ruby, Php, PHP, Lua, Perl, Kotlin, Scala, Groovy, Clojure, Dart, R, Julia, ShellScript, PowerShell) are not handled, causing NotSupportedException even though their corresponding provider classes exist and are registered in CreateDefaultManagerAsync. Calling CreateProvider(InteropProviderType.PHP) will fail despite PhpInteropProvider being available.

Additional Locations (1)

Fix in Cursor Fix in Web

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants