Skip to content

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

Open
MontrealAI wants to merge 2 commits intomainfrom
codex/upgrade-agijobmanager-html-to-v26-ipukml
Open

Add AGIJobManager v26 single-page Mainnet UI (agijobmanager_genesis_job_mainnet_2026-03-05-v26.html)#1462
MontrealAI wants to merge 2 commits intomainfrom
codex/upgrade-agijobmanager-html-to-v26-ipukml

Conversation

@MontrealAI
Copy link
Copy Markdown
Owner

Motivation

  • Provide a self-contained, single-page UI for the AGIJobManager protocol on Ethereum Mainnet that exposes job lifecycle operations, ENS integration, bridge conversion, metadata building, and administrative controls.
  • Consolidate read/write gating, token/vault conversion flows, and an operator-first mobile experience to reduce friction for Employers, Agents, and Validators.

Description

  • Add new file ui/agijobmanager_genesis_job_mainnet_2026-03-05-v26.html containing the full UI, styles, and client-side logic for the v26 experience.
  • Integrate Web3 and contract ABIs (AGIJobManager, ENSJobPages, ERC-20, AGIALPHAEqualMinterVault, NameWrapper, resolver) and implement wallet connect, chain detection, and read/write gating (updateWriteGate, requireConnected, requestMainnetSwitch).
  • Implement core flows and helpers: job metadata builder and IPFS upload (Pinata JWT support), create/apply/request-completion/validate/dispute/finalize/expire/cancel transactions, token approval helpers (ensureApproval, ensureApprovalForToken), deposit/mint via vault (prepareOfficialAgialphaMint, mintOfficialAgialpha), deBridge embed and route locking, completion assistant (URI normalization and metadata inspection), and per-job detail modal with timeline and settlement simulation.
  • Add admin control surfaces (routine and danger actions) with argument collection and confirmation, ENSJobPages previews and ENS verification using NameWrapper, a local transaction activity feed (TX_ACTIVITY_KEY), an autonomous agent packet generator, a command palette, and mobile-first enhancements (v26 mobile dock and sheet).

Testing

  • No automated tests were added or executed for this UI change.

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: 6bdaf7099e

ℹ️ 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".

Comment on lines +4898 to +4901
const title = (el("jobTitle")?.value || "").trim();
const summary = (el("jobSummaryBuilder")?.value || "").trim();
const details = [title, summary].filter(Boolean).join(" — ");
if(el("jobDetails")) el("jobDetails").value = details.slice(0, 204
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 Align ENS verification with on-chain authorization

The UI currently marks a subdomain as verified only when NameWrapper.ownerOf(tokenId) === userAccount, but protocol authorization is broader: ENSOwnership.verifyENSOwnership also accepts getApproved, isApprovedForAll, and resolver-address ownership paths (contracts/utils/ENSOwnership.sol:32-45,69-112). Because write flows gate on verified.agent / verified.club before sending transactions, valid users in those supported authorization modes are incorrectly blocked from applying or voting even though the contract would accept them.

Useful? React with 👍 / 👎.

Comment on lines +5777 to +5779
const summary = (el("jobSummaryBuilder")?.value || "").trim();
const details = [title, summary].filter(Boolean).join(" — ");
if(el("jobDetails")) el("jobDetails").value = details.slice(0, 204
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 Fix ENS admin argument schemas to match contract params

The ENS admin form schema labels revokePermissions and lockJobENS arguments as ensRegistrar and publicResolver, but ENSJobPages actually expects employer and agent for those positions (contracts/ens/ENSJobPages.sol:494-506); the same block also labels createJobPage as jobCompletionURI instead of specURI (contracts/ens/ENSJobPages.sol:253-255). Operators following these prompts will submit incorrect addresses/URI semantics, causing failed calls or incorrect ENS permission/text updates.

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: 2555f898a7

ℹ️ 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
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 Correct stale-dispute boolean semantics in admin schema

The admin argument schema labels resolveStaleDispute's boolean as approveCompletion, but the contract parameter is employerWins (contracts/AGIJobManager.sol:999 and docs/ui/abi/AGIJobManager.json). This inversion can drive operators to submit true expecting an agent-win completion path, while the contract interprets true as employer refund, causing an irreversible wrong settlement outcome.

Useful? React with 👍 / 👎.

Comment on lines +5877 to +5879
const cid = data.IpfsHash || data.cid || data.Hash || data.Value?.Cid?.["/"] || data.value?.cid || "";
lastUploadedMetadataURI = cid ? `ipfs://${cid}` : "";
if(el("generatedSpecURI")) el
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 admin authorization gating with method access control

The UI groups resolveDisputeWithCode and resolveStaleDispute under one moderatorMethods set, then authorizes manager calls as owner-or-moderator for those methods. On-chain access is split (resolveDisputeWithCode is onlyModerator, while resolveStaleDispute is onlyOwner in contracts/AGIJobManager.sol:970-999), so this gate wrongly allows one role for each method and leads to avoidable reverting admin transactions (and gas loss).

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