Skip to content

MontrealAI/AGIJobManager

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1,080 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

AGIJobManager

CI Security Verification Docs Security Policy License

AGIJobManager is an Ethereum smart-contract system for escrowed AGI work agreements, with optional ENS-backed job pages managed by ENSJobPages.

Important

New here? Start with the Genesis Console.
This is the fastest operator/reviewer entry point for the standalone mainnet UI.
Repo-pinned equivalent artifact: ui/agijobmanager_genesis_job_mainnet_2026-03-05-v33.html
Operator guide: docs/ui/GENESIS_JOB_MAINNET_HTML_UI.md

Quick links

  • Launch Genesis Console: https://montrealai.github.io/agijobmanagerv0.html
  • Read the operator guide: docs/ui/GENESIS_JOB_MAINNET_HTML_UI.md
  • Inspect the pinned standalone artifact: ui/agijobmanager_genesis_job_mainnet_2026-03-05-v33.html
  • Deployment / contract operations: hardhat/README.md and docs/DEPLOYMENT/README.md

Operational policy: intended for autonomous AI-agent execution with accountable human owner/operator oversight. This is policy intent and is not fully enforced on-chain.

Start here by role (30-second routing)

Canonical operator answers (quick reference)

  • Canonical deployment path: Hardhat (hardhat/README.md). Truffle is legacy/supported.
  • Canonical ENS replacement flow: deploy new ENSJobPages -> NameWrapper approval -> setEnsJobPages -> legacy migration if needed -> lock only after validation.
  • Canonical ENS naming format: <prefix><jobId>.<jobsRootName> with default prefix agijob.
  • Canonical ownership split:
    • AGIJobManager owner controls setEnsJobPages(...) and AGIJobManager governance.
    • wrapped-root owner controls NameWrapper approval needed for wrapped-root ENS writes.
  • Canonical safety rule: ENS hooks are best-effort side effects; settlement/dispute outcomes remain authoritative on AGIJobManager.

Manual vs automated (do not assume)

Action Automated by deploy scripts Manual caller
Deploy AGIJobManager / deploy new ENSJobPages Yes deployer key
NameWrapper approval setApprovalForAll(newEnsJobPages, true) No wrapped-root owner
AGIJobManager.setEnsJobPages(newEnsJobPages) No AGIJobManager owner
Legacy migration migrateLegacyWrappedJobPage(jobId, exactLabel) No ENSJobPages owner (if needed)
lockConfiguration() / lockIdentityConfiguration() No owner(s), only after validation

Most common owner/operator safety checks

Before any irreversible action:

  • Confirm which key is AGIJobManager owner vs wrapped-root owner.
  • Confirm manual steps are complete: setApprovalForAll(newEnsJobPages, true) then setEnsJobPages(newEnsJobPages).
  • Confirm at least one future job hook succeeds and legacy migration status is known.

Irreversible actions (delay until validated):

  • AGIJobManager.lockIdentityConfiguration()
  • ENSJobPages.lockConfiguration()

What this repository contains

UI surfaces (what exists now)

UI routing (pick the right interface quickly)

If you need to... Use this Why
Operate the mainnet standalone interface right now https://montrealai.github.io/agijobmanagerv0.html + docs/ui/GENESIS_JOB_MAINNET_HTML_UI.md Fastest newcomer/operator entry point for the standalone mainnet console.
Inspect the pinned standalone artifact in-repo ui/agijobmanager_genesis_job_mainnet_2026-03-05-v33.html Repo-pinned equivalent artifact for review, provenance, and versioned inspection.
Build/test the broader UI stack ui/ + docs/ui/README.md Broader UI effort and development docs.
Deploy/replace contracts and ENS components hardhat/README.md + docs/DEPLOYMENT/README.md Canonical deployment/operator runbooks; UI is not a deployment substitute.

UI safety boundary: the standalone HTML artifact is action-capable, but contract deployment, ownership wiring, and ENS replacement authority remain in Hardhat/deployment runbooks.

Core contracts

  • contracts/AGIJobManager.sol: core escrow, role checks, job lifecycle, settlement, dispute flow, owner controls.
  • contracts/ens/ENSJobPages.sol: optional ENS per-job page manager, naming, resolver updates, permission hooks, and legacy wrapped-page migration.
  • contracts/utils/*.sol: linked libraries used by AGIJobManager in official Hardhat deployment.

Deployment tooling

  • hardhat/: official/recommended deployment and Etherscan verification flow.
  • Root Truffle config + migration scripts: legacy/supported deployment flow for backward compatibility and reproducibility.

Documentation entry points

Recommended vs legacy deployment paths

Recommended (official): Hardhat

Use Hardhat for production deployment and verification of AGIJobManager, and for additive ENSJobPages deployment/replacement.

Start here: hardhat/README.md

Legacy (supported): Truffle

Truffle remains available for historical reproducibility and existing operational environments.

Legacy docs:

ENSJobPages in one minute

  • AGIJobManager provides the numeric jobId.
  • ENSJobPages provides the label prefix (jobLabelPrefix, default agijob) and root suffix (jobsRootName, e.g. alpha.jobs.agi.eth).
  • Effective ENS name format is: <prefix><jobId>.<jobsRootName>.
  • With current defaults, names are:
    • agijob0.alpha.jobs.agi.eth
    • agijob1.alpha.jobs.agi.eth
  • Prefix updates only affect jobs whose labels are not yet snapshotted.
  • ENS hooks are best-effort and non-fatal to core settlement; protocol settlement can succeed even when ENS writes fail.

See full behavior details: docs/ENS/ENS_JOB_PAGES_OVERVIEW.md

Operator quickstart

  1. Read the official Hardhat guide and prepare .env + deploy config.
  2. From hardhat/, compile (cd hardhat && npx hardhat compile) and dry-run (DRY_RUN=1 ...).
  3. Deploy AGIJobManager with mainnet confirmation gate.
  4. If replacing ENS pages, deploy ENSJobPages via hardhat/scripts/deploy-ens-job-pages.js.
  5. Perform manual post-deploy wiring on mainnet:
    • NameWrapper.setApprovalForAll(newEnsJobPages, true) by wrapped-root owner.
    • AGIJobManager.setEnsJobPages(newEnsJobPages) by AGIJobManager owner.
  6. If legacy jobs must retain historical labels, run per-job migration (migrateLegacyWrappedJobPage(jobId, exactLabel)).
  7. Verify results on Etherscan using Read Contract + events.
  8. Only lock configuration after validation is complete.

Expected result after safe cutover:

  • New jobs use <prefix><jobId>.<jobsRootName> (default agijob...alpha.jobs.agi.eth).
  • AGIJobManager lifecycle and settlement continue even if an ENS side-effect fails.
  • Legacy labels remain stable unless explicitly migrated/imported.

Never-do-this-by-accident checklist

  • Do not assume scripts perform NameWrapper approval or setEnsJobPages(...); those remain manual.
  • Do not call lockConfiguration() / lockIdentityConfiguration() before deploy, wiring, and migration validation.
  • Do not assume changing jobLabelPrefix rewrites existing legacy/snapshotted names.
  • Do not treat ENS hook failures as settlement failures; check both protocol events and ENS hook events.

Detailed procedures and expected outputs:

Local development checks

npm ci
npm run lint
npm run build
npm run size
npm test
npm run docs:check
npm run docs:ens:check

Documentation

Maintenance commands:

npm run docs:gen
npm run docs:check
npm run check:no-binaries

Alias note: check-no-binaries is exposed as npm run check:no-binaries.

Policy and legal references