Skip to content

Add AGIJobManager v26 single-page Mainnet UI (agijobmanager_genesis_job_mainnet_2026-03-05-v26.html)#1463

Open
MontrealAI wants to merge 2 commits into
mainfrom
codex/upgrade-agijobmanager-html-to-v26-4a2pxf
Open

Add AGIJobManager v26 single-page Mainnet UI (agijobmanager_genesis_job_mainnet_2026-03-05-v26.html)#1463
MontrealAI wants to merge 2 commits into
mainfrom
codex/upgrade-agijobmanager-html-to-v26-4a2pxf

Conversation

@MontrealAI
Copy link
Copy Markdown
Owner

Motivation

  • Provide a self-contained, single-page web UI for the AGIJobManager protocol targeted at Ethereum Mainnet to enable employers, agents, and validators to interact with the contract without a separate backend.
  • Surface important operational features (job builder, IPFS pinning, ENS verification, validator flows, and a deBridge → vault conversion flow) in a single readable interface to reduce user friction.
  • Improve mobile UX and session ergonomics with a command palette, activity concierge, operator deck, and mobile dock for quick one‑handed operations.

Description

  • Adds a new static HTML asset ui/agijobmanager_genesis_job_mainnet_2026-03-05-v26.html containing the full UI, styles, and client-side JavaScript for v26 of the AGIJobManager interface.
  • Implements wallet integration using injected providers and web3, on-chain interactions with AGIJobManager, ENSJobPages, token contracts, and AGIALPHAEqualMinterVault via embedded ABIs and read/write helpers.
  • Provides features including: job spec builder and local draft storage, JSON metadata generation and optional browser IPFS pinning (Pinata JWT support), create/apply/validate/finalize/dispute flows, completion assistant with metadata inspection, completion NFT browsing, ENS preview and verification flows, admin control surfaces, and an embedded deBridge transfer view with vault minting tooling.
  • Includes operational UX: action review modal for transaction confirmation, local activity trail (localStorage) and sync/auto-refresh controls, attention queue, command palette, mobile dock and sheet (v26-mobile-enhancements), and a comprehensive Terms & Conditions reader embedded from protocol text.

Testing

  • No automated tests were executed for this change (no unit/CI tests were added or run as part of this PR).

Codex Task

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 9fa246cbaf

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

if(el("generatedSpecCID")) el("generatedSpecCID").textContent = JSON.stringify(data);
if(lastUploadedMetadataURI && el("jobSpecURI")) el("jobSpecURI").value = lastUploadedMetadataURI;
if(el("metadataUriStatus")) el("metadataUriStatus").textContent = lastUploadedMetadataURI ? "IPFS ready" : "Uploaded";
setToast(lastUploadedMetadat
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P1 Badge Provide argument schemas for every admin control method

The Operator Deck now routes admin calls through collectAdminArgs, but only methods present in ADMIN_METHOD_SCHEMAS get inputs; many methods exposed here (for example setVoteQuorum, setRequiredValidatorApprovals, setAgentBondParams, addAGIType) are missing from that schema map. For those buttons, the modal collects no arguments and executeAdminControl calls contract.methods[method](...args) with an empty array, which fails parameter-count validation and prevents the action from being executed at all.

Useful? React with 👍 / 👎.

Comment on lines +4911 to +4913
if(lastUploadedMetadataURI && el("jobSpecURI")) el("jobSpecURI").value = lastUploadedMetadataURI;
if(el("metadataUriStatus")) el("metadataUriStatus").textContent = lastUploadedMetadataURI ? "IPFS ready" : "Uploaded";
setToast(lastUploadedMetadat
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Align ENS verification with on-chain authorization rules

This adds a resolverOwnerMatch path that treats a wallet as verified when the NameWrapper token owner is a contract whose owner() matches the wallet. AGIJobManager’s on-chain verification logic does not accept that condition (it checks NameWrapper owner/getApproved/isApprovedForAll or resolver addr(node)), so users can be shown as verified in the UI and proceed to role-gated actions that will still revert on-chain, wasting gas.

Useful? React with 👍 / 👎.

Copy link
Copy Markdown

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Choose a reason for hiding this comment

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

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: 73cbacaf44

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

const data = await res.json();
const cid = data.IpfsHash || data.cid || data.Hash || data.Value?.Cid?.["/"] || data.value?.cid || "";
lastUploadedMetadataURI = cid ? `ipfs://${cid}` : "";
if(el("generatedSpecURI")) el("ge
Copy link
Copy Markdown

Choose a reason for hiding this comment

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

P2 Badge Make actionable-only filtering ignore the details action

The Actions -> Actionable only filter relies on rowMatchesFilters hiding rows where actions.length === 0, but buildActionButtons unconditionally pushes a Details button for every job. That means actions.length is never zero, so enabling the filter still shows all jobs instead of only rows with executable on-chain actions. This breaks the filter's advertised behavior and makes triage harder when users want only actionable jobs.

Useful? React with 👍 / 👎.

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

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant